为什么这两种情况对 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)
这里,改变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)