小编典典

Java在输出String和方法返回时,为什么方法首先返回输出?

java

在下面的代码中,如果字符串"Mult"test1(4)方法调用之前出现,为什么方法在字符串之前输出?为什么它会跳出输出方法的第一部分的形式,然后离开方法以输出字符串,然后返回到方法以输出方法的返回值?

码:

public class Scratch{
  public static void main(String[] args){
    System.out.println("Mult:" + test1(4));
  }

  public static int test1(int n){
    System.out.println("N:" + n);
    return n*2;
  }
}

输出:

N:4
Mult:8

阅读 307

收藏
2020-11-26

共1个答案

小编典典

首先要注意的是,当+对两个操作数使用a时String,两个操作数之一是a ,表达式的结果是a String

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

System.out.println("Mult:" + test1(4));

您正在调用,PrintStream#println(String)因为它out是type的变量PrintStream。注意该方法如何接受单个String参数。因此,String
必须从解决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

这是另一个String产生String价值的串联

"N:4"

为此特定的调用。String然后,将产生的值用作该println(..)方法的参数,该方法将其输出到程序的标准输出。

然后该方法返回该值8,因为4 * 2 = 8

该返回值就是调用该test1(4)方法的值。所以

System.out.println("Mult:" + test1(4));

相当于

System.out.println("Mult:" + 8);

然后String发生串联,转换

"Mult:" + 8

转化为String价值

"Mult:8"

String随后被用作单一的参数传递给println(..)它输出到你的程序的标准的输出方法。

2020-11-26