gpt4 book ai didi

java - 字符串可以重写吗?

转载 作者:行者123 更新时间:2023-12-01 18:36:46 25 4
gpt4 key购买 nike

我的教科书说字符串不可重写或不可变的,即,一旦输入字符串的值,就无法更改它。但今天,当我运行以下代码时,String str 被静音,因为编译器没有给出任何错误,并且新的 String a' s 值已成功输入到 str 中。

class Test
{
static void main()
{
String str = "something";
String a ="anything";
str = a; //str is being over written without any error
System.out.println(str);
}
}

输出是:任何东西

那么,我的书错了吗?

如果我的书没有错,请举例说明String是不可变的

最佳答案

这本书是正确的。当您说str = a时,您并没有更改String“某物”的任何内容。您应该区分 strsomething,它们是不一样的。这里的“something”是内存中的 String 对象,而 str 只是对该字符串的引用。与引用a相同。

当你说:

str = a

您并没有更改某些内容,您实际上是在说,“更改引用str以指向引用a所指向的任何内容到。” String 保持不变,引用发生变化。

类似地,这就是为什么您可能会在书中看到连接 String 的成本很高,例如执行以下操作:

str = str + a

同样不会更改现有的String,而是创建一个新的String对象,该对象等于String的串联引用 str 所引用的 String 以及引用 a 所引用的 String

关于java - 字符串可以重写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623425/

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