[英]Java array of primitive data types
为什么下一个代码像使用引用类型而不是原始类型一样工作?
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]);
output 是:2 2 3 3 而不是 1 2 1 3
int 数组的内容可能不是引用,但 int[] 变量是. 通过设置b = a
,您正在复制引用,并且两个 arrays 指向同一块 memory。
我在这里描述你在做什么:
int[] a = new int[5];
int[] b = a;
您不是通过int[] b = a
创建新实例
如果您需要新实例(以及您的预期结果)添加clone()
: int[] b = a.clone()
祝你好运
a
和b
都指向 ( is ) 同一个数组。 更改a
或b
中的一个值将更改另一个的相同值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.