gpt4 book ai didi

Java - 字符串不变性和数组可变性

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:37 26 4
gpt4 key购买 nike

我知道数组 ab 指向与字符串 s1s2 相同的位置不是。为什么?

代码:

    String[] a = {"a","b","c"};
String[] b = a;
a[0] = "Z";
String s1 = "hello";
String s2 = s1;
s1 = "world";
System.out.println(Arrays.toString(a) + " - a"); //a and b are same
System.out.println(Arrays.toString(b) + " - b");
System.out.println(s1 + " "+ s2); // s1 and s2 are not same.

输出:

    [Z, b, c] - a
[Z, b, c] - b
world hello

最佳答案

在点 (2) 处,s1s2 指向池中的相同文字。但是,当您更改 s1 时,会创建另一个文字,并且字符串不再指向同一个位置。

String s1 = "hello";
String s2 = s1; (2)
s1 = "world";

您可以通过打印的结果来验证这一点

s1 == s2

请注意,我没有使用 equals,因为我对比较引用感兴趣。现在,只要您为 s1 分配不同的值,事情就会变成这样:

+-------+
| world | <- s1
+-------+

+-------+
| hello | <- s2
+-------+

关于Java - 字符串不变性和数组可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609653/

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