首先要注意的是,当与两个操作数一起使用时,两个操作数中的一个是字符串,表达式的结果是字符串.

因此,在以下方法中调用表达式

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(..)方法的单个参数,该方法将其输出到程序的标准输出.