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

标签 java methods output

在下面的代码中,如果字符串 "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

最佳答案

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

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

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

您正在调用PrintStream#println(String)因为 outPrintStream 类型的变量。请注意该方法如何接受单个 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

进入字符串

"Mult:8"

然后将该String用作println(..)方法的单个参数,该方法将其输出到程序的标准输出。

关于Java输出String和方法返回时,为什么方法返回先输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899934/

相关文章:

java - Action 监听器java问题

c# - 为什么我们不能将对象直接分配给返回相同类型的方法?

java - 用户用 Method 输入的数组填充

c++ - 如何使用C++读取另一个程序中源代码的输出

java - 如何让 Eclipse Remote Debugger 在 JVM 最终连接之前一直监听端口?

java - 是否可以在 JEditorPane 中缩放/缩放字体大小(和图像大小)

javascript - 闭包问题和别处定义的方法

java - SoundBoard 将音频输出更改为虚拟音频线

tsql - T-SQL 删除插入的记录

java - 了解 Java 中可变参数的意外行为