Java在返回对象引用后执行增量操作

时间:2018-06-12 09:43:54

标签: java return increment order-of-execution

我有这段代码:

public class counter {
    public static void main(String[] args){
        double[] array = new double[10];
        for(int i=0;i<array.length;i++) array[i] = i;
        printArray(array);
        double result = doSomething(array);
        printArray(array);
    }
    public static void printArray(double[] arr){
        for(double d : arr) System.out.println(d);
    }
    public static double doSomething(double[] array){
        return array[0]++;
    }
}

我已经知道在返回语句之后不再执行代码,增量++会增加下一个表达式的值。因此,对我而言,数组array[0]的第一个元素不应该递增似乎是合乎逻辑的。

但是输出数组是{1,1,2,3,4,5,6,7,8,9}

2 个答案:

答案 0 :(得分:4)

  返回语句后

不再执行代码

这是对的。但是++在返回语句之后不是,它是的一部分

您的代码相当于:

int temp = array[0];
array[0] = temp + 1;
return temp;

答案 1 :(得分:0)

数组[0] ++包含在return语句中。 因此,递增的值存储在array [0]中(即array [0] = 1) 不要混淆自己认为增量将在return语句之后,因为它是后增量