繁体   English   中英

Java 原始数据类型数组

[英]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。

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

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

您不是通过int[] b = a创建新实例

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM