gpt4 book ai didi

java - 向我解释字符串是不可变的

转载 作者:行者123 更新时间:2023-11-29 06:36:57 28 4
gpt4 key购买 nike

我读了很多关于字符串对象是不可变的,只有字符串缓冲区是可变的。但是当我尝试这个程序时。我很困惑。那么这个程序中发生了什么。

class Stringss {
public static void main(String[] args) {

String s="hello";
String ss=new String("xyz");
System.out.println(ss);
System.out.println(s);

s="do";
ss=new String("hello");
System.out.println(s);
System.out.println(ss);
}
}

输出是

xyz
hello
do
hello

最佳答案

在您的代码中,s 不是 String 对象。它是对字符串对象的引用。您的代码使其引用了几个不同的 String 对象。但是 String 对象本身并没有改变。

例如,如果可以的话,字符串将不会是不可变的

s.setCharacterAt(3, 'Z');

s.setValue("foo")

但是做

s = "a string";
s = "another string";

不改变“a string” 对象包含的内容。它只是让 s 指向另一个字符串。

打个比方,VHS 是可变的。你可以更换乐队上的东西。 DVD 是不可变的:您无法更改磁盘上写入的内容。但这并不妨碍 DVD 播放器播放多张不同的 DVD。将另一张 DVD 放入 DVD 播放器不会改变 DVD 的内容。

关于java - 向我解释字符串是不可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198274/

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