【发布时间】:2018-11-21 16:00:02
【问题描述】:
我有这个代码:
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]++;
}
}
我了解到,在 return 语句之后不再执行代码,并且 increment++ 会在下一个表达式处增加值。所以在我看来,数组array[0] 的第一个元素不应该增加是合乎逻辑的。
但是输出数组是 {1,1,2,3,4,5,6,7,8,9}
【问题讨论】:
-
您的增量不是在返回语句之后。它在 inside return 语句中。
-
这里有问题吗?显然,你认为合乎逻辑的事情并非如此。
variable++是一个表达式,它产生变量在递增之前的值,并且还会在表达式完成之前递增变量。
标签: java return increment order-of-execution