gpt4 book ai didi

java - 原始数据类型数组与原始数据类型操作

转载 作者:行者123 更新时间:2023-12-01 20:27:11 25 4
gpt4 key购买 nike

怎么会这样

int[] a = {0, 1};
int[] b = a;
a[0] = 1;
b[0] = 2;
System.out.println(a[0] + b[0]);

打印 4 和这个

int a = 2;
int b = a;
b += 3;
System.out.println(a);

打印 2。

这是否与数组如何使用 byReference 以及如何操作原始值有关,而纯基元操作使用 byValue?

最佳答案

int 是一个基元,而不是一个对象,因此它只包含一个值。当您将一个基元分配给另一个基元 (a = b) 时,您只需为第一个基元赋予与第二个基元相同的值即可。因此,当您更改第二个时,它不会对第一个产生影响。

int[]是一个数组,它是一个对象,数组的所有元素也是一个对象。这意味着它们实际上指向内存中的某个位置。当您将一个对象分配给另一个对象时(a[0] = b[0] 或什至当 ab 时 a = b 是数组),您将它们都指向内存中的同一位置。因此,当您更改第二个时,它也会更改第一个,因为它们实际上指向同一事物。

如果您希望 b[0] 仅包含 a[0],您可以这样做:

    int[] a = {1, 2};
int [] b = new int[2];
b[0] = Arrays.copyOf(a,1)[0];

换句话说,仅复制 a 的第一个元素时生成的新数组的第 0 个元素。

更新:您也可以通过原语运行它,如下所示:

int x = a[0];
b[0] = x;

现在我想这可能更有效。

关于java - 原始数据类型数组与原始数据类型操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com