为什么这两种情况对 Java 中的 Array 元素显示不同的结果?

Why do these two cases show different results for Array elements in Java?

这里,改变a和b的值后,Array arr元素的值不会改变。

int a=10, b=20;
int[] arr = {a,b};
a = 20;
b = 10;
System.out.println("a = " + a); // a=20
System.out.println("b = " + b); // b=10
System.out.println(Arrays.toString(arr)); // prints [10, 20]

此处,一旦更改 IntArr 元素的值,intArr2 元素就会更改值。

int[] intArr = {10,12};
int[] intArr2 = intArr;
intArr[1] = 1000;
System.out.println("intArr2[1]: " + intArr2[1]); // prints 1000

这里,它不改变 str 数组元素的值:

        String word1="abc";
        String word2="def";
        String[] str = {word1, word2};
        word1 = str[1];
        word2 = str[0];
        System.out.println("word1 = " + word1); //def
        System.out.println("word2 = " + word2); //abc
        System.out.println(Arrays.toString(str)); // prints [abc, def]

有人可以解释一下吗?

在第一种情况下,a & b 的值分配给数组 arr。因此在分配 a, b 中的任何更改后都不会反映到 arr.

在第二种情况下 intArr2 正在使用 intArr 的引用,因此这些数组中任何一个的任何更改都应该反映两者,事实上位置是唯一的。

你觉得有意义吗?

每个物体,都有2个可以区分的东西。

  • 它的价值
  • 它的地址

一个有值(intArr),另一个有地址(intArr2)