Java中的操作顺序是什么?

时间:2018-01-26 16:29:56

标签: java return

我有以下简单的Java代码,我知道输出是baedc

public class Main {
    public static String c(){
        System.out.print("b");
        return "e";
    }
    public static void main(String[] args) {
        String c = "c";
        String d = "d";
        System.out.print(("a"+c())+((d)+"c"));
    } 
}

我的问题是,为什么不从a开始,因为我们在执行"a"之前打印c()?如果它首先执行c(),那么为什么不beadc

2 个答案:

答案 0 :(得分:9)

  

我们在执行"a"

之前打印c()

这是不正确的:我们在调用"a"之前在字符串连接表达式中使用c(),在字符串构造完成之前我们不会打印

这就是为什么"b"(调用c()的副作用)打印在"a"之前,这是由串联表达式{{1}构造的字符串中的第一个字符}。

答案 1 :(得分:1)

作为参数传递给函数的所有函数调用必须在函数调用之前执行,因为包含函数必须知道这些函数在执行之前返回的内容。