原始数据类型的Java数组

时间:2011-05-29 09:18:30

标签: java arrays types pass-by-reference pass-by-value

为什么下一个代码的工作方式类似于使用引用类型而不是原始类型?

int[] a = new int[5];
int[] b = a;
a[0] = 1;
b[0] = 2;
a[1] = 1;
b[1] = 3;
System.out.println(a[0]);
System.out.println(b[0]);
System.out.println(a[1]);
System.out.println(b[1]);

输出是: 2 2 3 3 而不是 1 2 1 3

4 个答案:

答案 0 :(得分:6)

int数组的内容可能不是引用,但int []变量。通过设置b = a,您将复制引用,并且两个数组指向同一块内存。

答案 1 :(得分:2)

我在这里描述你在做什么:

  1. 创建整数数组int[] a = new int[5];
  2. 创建对已创建数组int[] b = a;
  3. 的引用
  4. 将整数添加到数组“a”,位置0
  5. 覆盖先前添加的整数,因为b [0]指向与[0]
  6. 相同的位置
  7. 将整数添加到数组“a”,位置1
  8. 再次覆盖先前添加的整数,因为b [1]指向与[1]相同的位置

答案 2 :(得分:0)

您没有按int[] b = a

创建新实例

如果您需要新实例(以及您的预期结果),请添加clone()int[] b = a.clone() 祝你好运

答案 3 :(得分:0)

ab都指向( )相同的数组。更改ab中的值将更改另一个值的相同值。