У меня проблема с пониманием действия "pass-by-value" Java в следующем примере:
public class Numbers {
static int[] s_ccc = {7};
static int[] t_ccc = {7};
public static void calculate(int[] b, int[] c) {
System.out.println("s_ccc[0] = " + s_ccc[0]); // 7
System.out.println("t_ccc[0] = " + t_ccc[0]); // 7
b[0] = b[0] + 9;
System.out.println("\nb[0] = " + b[0]); // 16
c = b;
System.out.println("c[0] = " + c[0] + "\n"); // 16
}
public static void main(String[] args) {
calculate(s_ccc, t_ccc);
System.out.println("s_ccc[0] = " + s_ccc[0]); // 16
System.out.println("t_ccc[0] = " + t_ccc[0]); // 7
}
}
Я знаю, потому что s_ccc является ссылочной переменной, когда я передаю его методу calculate(), и я вношу некоторые изменения в его элементы в методе, изменения остаются даже после того, как я покинул метод. Я думаю, что то же самое должно быть с t_ccc. Это снова ссылочную переменную, я даю ее методу calculate(), и в методе я меняю рефери на t_ccc как на s_ccc. Теперь t_ccc должен быть ссылочной переменной, указывающей на массив, у которого один элемент типа int равен 16. Но когда метод calculate() оставлен, кажется, что t_ccc указывает на его старый объект. Почему это происходит? Разве это не должно измениться? В конце концов, это ссылочная переменная.
Привет