首先要注意的是,当与两个操作数一起使用时,两个操作数中的一个是字符串,表达式的结果是字符串.
因此,在以下方法中调用表达式
System.out.println("Mult:" + test1(4));
您正在调用PrintStream#println(String),因为out是PrintStream类型的变量.请注意,该方法如何接受单个String参数.因此,必须从以下字符串的串联中解析字符串:
"Mult:" + test1(4)
为此,必须执行test1(4)方法.
public static int test1(int n){
System.out.println("N:" + n);
return n*2;
}
此方法再次使用PrintStream#println(String),但带有参数
"N:" + n
这是另一个产生字符串值的字符串连接
"N:4"
为此特定的调用.然后,将产生的String值用作println(..)方法的参数,该方法将其输出到程序的标准输出.
然后该方法返回值8,因为4 * 2 = 8.
该返回值就是调用test1(4)方法的值.所以
System.out.println("Mult:" + test1(4));
相当于
System.out.println("Mult:" + 8);
然后发生字符串串联,转换
"Mult:" + 8
到字符串值
"Mult:8"
然后,该字符串用作println(..)方法的单个参数,该方法将其输出到程序的标准输出.