字符串连接的打印顺序

Order of prints with string concatenation

为什么下面的代码会打印出来

float called long called 20.0 21

而不是

float called 20.0 long called 21

代码如下:

public class Test5 {
    static float fun(int a) {
        System.out.print("float called ");
        return a;
    }

    static long fun(long a) {
        System.out.print("long called ");
        return a;
    }

    public static void main(String[] args) {
        System.out.println(fun(20) + " " + fun(21L));
    }
}

System.out.println(fun(20)+" "+fun(21l)); 传递了一个 String,它是连接 fun(20)fun(21l) 返回的值的结果。因此,这两个方法在这个 println 语句之前执行,每个方法都打印自己的 String.

  • 首先 fun(20) 打印 "float called " 和 returns 20.0
  • 然后 fun(21l) 打印 "long called " 和 returns 21
  • 最后 System.out.println(fun(20)+" "+fun(21l)); 打印“20.0 21”

这是一个方法重载的例子。该示例显示 class 可以有多个同名方法。

此处列出了更多示例: https://beginnersbook.com/2013/05/method-overloading/