2012-03-10 73 views

回答

7

new String()是一個空字符串。這可能是一個方法的返回值,例如,如果你沒有更有意思的返回值。使用文字""可能會更好,因爲文字空字符串值已經被執行。

4

它是一個空字符串,相當於""。從javadoc:

初始化一個新創建的String對象,以便它表示一個空的字符序列。請注意,由於字符串是不可變的,因此不需要使用此構造函數。

編輯:使用這個詞相當於

選擇不當。爲了澄清以下所有的true

"" == "" 
"" != new String() 
"".equals(new String()) 
+0

「等值」...但「相同」? 'new String()==「」'? – 2012-03-11 00:10:07

+0

@pst'new String()==「」'將會是false。他們不代表相同的對象,因爲字符串對象不是來自實習生池。 – Jivings 2012-03-11 02:13:40

3

由於字符串在Java中是不可變的,我爲什麼要使用參數較少String構造,並創建一個對象?

的唯一原因是,如果你想創建一個字符串,這是equal""但不等同於它。即使如此,它更可能是你打電話new String(str)其中str指的是一個空字符串。

構造函數提供的真正原因尚不完全清楚。然而它並沒有什麼壞處,並且在開始時可能有一些原因(在Java被稱爲Java之前)。

+0

有趣的事實:.NET沒有這種形式(no-arg字符串構造函數) – 2012-03-11 00:08:07

+0

@pst - 只有在您認爲這是一個有趣的問題時纔有意思。我的觀點是,從實際的角度來看,無處不在的方法/構造函數的存在(或不存在)是無關緊要的。 – 2012-03-11 02:50:04

+0

@StephenC:我發現無用的方法或構造函數會分散注意力。當我看到一個新的API時,我希望它儘可能簡單。無用的方法讓我閱讀更多的文檔,我必須決定*不*使用它們。 – 2012-03-11 15:00:47

相關問題