У меня есть такой код:
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 больше не выполняется код, а приращение ++ увеличивает значение в следующем выражении. Поэтому мне кажется логичным, что первый элемент массива array[0] не должен увеличиваться.
Однако выходной массив: {1,1,2,3,4,5,6,7,8,9}
Здесь есть вопрос? Ясно, что то, что вам кажется логичным, не соответствует действительности. variable++ - это выражение, которое возвращает значение, которое переменная имела до увеличения, а также увеличивает переменную до завершения выражения.




after the return statement no more code is executed
Это правильно. Но ++ - это не после оператор возврата, это Часть этого.
Ваш код эквивалентен:
int temp = array[0];
array[0] = temp + 1;
return temp;
Массив [0] ++ включается в оператор возврата. Следовательно, увеличенное значение сохраняется в массиве [0] (т.е. массив [0] = 1). Не путайте себя, думая, что инкремент будет происходить после оператора return, поскольку он пост-инкремент
Ваше приращение - это не после оператор возврата. Это внутри - оператор возврата.