gpt4 book ai didi

java - 两个相同的程序产生不同的结果

转载 作者:行者123 更新时间:2023-12-03 21:42:57 25 4
gpt4 key购买 nike

昨天我问了一个关于按值引用的问题,strange сopy values ​​from one array to another ,并认为我在看到这段代码后明白了答案:

public static void main(String[] args) {
String[] x = {"A"};
String[] y = x;
x[0] = "B";
System.out.print(x[0] + " " + y[0]);
}

然后我看到了这个与第一个相同的例子:

public static void main(String[] args) {
String x = "A";
String y = x;
x = "B";
System.out.print(x + " " + y);
}

而且我不明白为什么在这个例子中,正确答案会是B A,而不是B B。我认为,我声明了 x,然后 y 引用了 x

最佳答案

第一个例子:

您已经声明了一个 String 数组,其唯一成员是 "A"。您声明另一个 String 数组并将其分配给 x。现在您有两个引用同一个数组的数组引用。您将内容更改为 "B",因此它对两个数组引用都是可见的。您修改了唯一存在的数组对象的内容。

第二个例子:

您已经声明了一个内容为"A"String。您声明另一个 String 并将其分配给 x。现在您有两个字符串引用引用相同的 String。您将变量 x 更改为 "B",现在 xy 指的是不同的字符串,所以你看到“B A”。您没有更改原始字符串对象(String 是不可变的)。

关于java - 两个相同的程序产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19691494/

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