2015-01-11 138 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