У меня проблема с пониманием действия "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 указывает на его старый объект. Почему это происходит? Разве это не должно измениться? В конце концов, это ссылочная переменная.
Привет
