2015-01-11 68 views
-2

在Java 5.0中,以下内容有何区别?Java字符串声明差异

1.

String variable = "hey"; 

2.

String variable = new String("hey"); 
+0

人给你一个字符串的引用,对方给你一个字符串的拷贝。你有什么疑问? –

回答

1

这是一个关于堆栈溢出很常见的问题,这已被标记为复制所以这个答案也许可以作为对参考答案;其中许多具有相当高的upvotes: -

new String() vs literal string performance

Difference between string object and string literal

What is the difference between "text" and new String("text")?

总之,我的2美分,赋予文本时,您创建一个引用到一个实习的字符串,而如果你使用new String("..."),您正在返回对该字符串副本的对象引用。

http://en.wikipedia.org/wiki/String_interning

0

读取第一个只是创建对象的引用。第二个创建一个全新的对象。当您使用==来比较两个对象时,您的出席会有所不同。 例如:

String variable1 = "hey"; 
String variable = "hey"; 
String variable2 = new String("hey"); 

当比较:

variable == variable1 //true 
variable1 == variable2 //false