【问题标题】:How can you say String is immutable since you can change it? [duplicate]你怎么能说 String 是不可变的,因为你可以改变它? [复制]
【发布时间】:2014-03-21 13:41:24
【问题描述】:

既然字符串是不可变的,我们如何改变字符串示例

String s1="Hello";
  String s2="Manas";

现在我正在制作

s1=s1+s3;

它将打印“Hello Manas”。所以字符串 s1 会改变。

那你怎么能说 String 是不可变的呢?

【问题讨论】:

  • 不可变!= final。查看条款了解更多信息
  • Possible duplicate。你的意思是s1=s1+s2;
  • 字符串是不可变的。 s1s2 不是 String 对象,它们是 String 对象的引用,这些引用可以更改。
  • 不可变意味着默认为 final 那么你如何改变 final 变量或引用。

标签: java string


【解决方案1】:

您没有更改"Hello" 的内容,而是更改了变量s1 的值以完全引用不同的字符串对象。

不变性与更改变量的值无关 - 如果您想防止这种情况发生,您可以将有问题的变量设为 final。

【讨论】:

  • 您没有更改引用的值 - 您将 variable 的值更改为不同的引用。 (就像int x = 0; x = 5; 不会改变 0 的含义,它会将 x 的值更改为 5。)
  • @JonSkeet 对不起,我的措辞不好。现已修复。
  • 它不像 (int x = 0; x = 5) 它像 (final int x = 0; x=5;) 那么你如何改变最终变量。
猜你喜欢
  • 2016-12-15
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2021-05-03
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多