【发布时间】:2013-10-11 16:07:09
【问题描述】:
所以我的问题是关于声明和分配字符串。
我通常声明字符串的方式是执行以下操作:
String s1 = "Stackoverflow";
然后,如果我需要更改 s1 的值,我会执行以下操作:
s1 = "new value";
今天我发现了另一种方法,声明一个字符串会是这样的:
String s2 = new String("Stackoverflow");
然后更改值将是:
s2 = new String("new value");
我的问题是这两者有什么区别还是仅仅是优惠。从第四行看代码
s2 = new String ("new value");
我假设这样做会创建一个新的内存位置,然后 s2 会指向它,所以我怀疑它会用于更改值,但我可以看到它在声明字符串时被使用。
【问题讨论】:
-
你也可以
s2 = new String(new String("new value")); -
new String("") 是缓慢的方式。阅读 [这篇文章 Java 中表达式“new String(…)”的目的是什么?][1] [1]:stackoverflow.com/questions/390703/…
-
@MemLeak 在 cmets 中发布链接使用
[description](link)格式 -
尝试阅读 this topic 关于字符串文字池。我认为它会很有用
-
使用
new String(..)创建一个新对象,而不是使用您拥有的“文字”。除非你真的理解这一点并且出于某种(奇怪的)原因需要它,否则你不应该这样做new String(..),因为它只会不必要地弄乱堆。