Java 基本数据类型数组

发布于 2024-11-10 07:46:39 字数 274 浏览 4 评论 0原文

为什么接下来的代码会像使用引用类型而不是原始类型一样工作?

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

Why next code works like it uses reference types rather than primitive 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]);

And the output is:
2
2
3
3
rather than
1
2
1
3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

百善笑为先 2024-11-17 07:46:40

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

The contents of the int array may not be references, but the int[] variables are. By setting b = a you're copying the reference and the two arrays are pointing to the same chunk of memory.

我恋#小黄人 2024-11-17 07:46:40

我描述了您在这里所做的事情:

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

I describe what you are doing here:

  1. creating an array of integers int[] a = new int[5];
  2. creating a reference to created array int[] b = a;
  3. adding integer to array "a", position 0
  4. overwriting previously added integer, because b[0] is pointing to the same location as a[0]
  5. adding integer to array "a", position 1
  6. overwriting previously added integer again, because b[1] is pointing to the same location as a[1]
酒几许 2024-11-17 07:46:40

不会通过 int[] b = a 创建新实例,

如果您需要新实例(以及您的预期结果),则 添加 clone(): int[] b = a.clone()

祝你好运

you are not creating a new instance by int[] b = a

if you need new instance (and your expected result) add clone(): int[] b = a.clone()

good luck

避讳 2024-11-17 07:46:40

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

Both a and b points to (is) the same array. Changing a value in either a or b will change the same value for the other.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文