2014-09-26 129 views
0

這是一個概念性問題。我知道字符串是不變的;它們的值在創建後無法更改。考慮這個宣言 -靜態字符串vs Java中的字符串

private final static String ABC = "abc"; 

VS

private final String ABC = "abc"; 

爲什麼在性能方面更好的的第一個?

如果ABC的價值沒有在課堂上直接更新,是否有任何理由需要第二個?

在此先感謝。

+6

你是否理解'static'和non-'static'之間的區別? – 2014-09-26 21:13:11

+0

字符串_immutable_,但不一定_constant_。 – iamnotmaynard 2014-09-26 21:15:22

+0

@oliver Charlesworth - 是的,我瞭解靜態和非靜態之間的區別。這個問題是針對STRINGS的。感謝所有將問題標記爲重複的人,但提供的重複鏈接無法回答我的問題。 – ND27 2014-09-26 21:48:19

回答

1

第一個是〜更好〜因爲在所有實例中都不會有額外的String引用。因爲它們都是常量表達式,所以在類字節代碼中(使用它們的值時)會得到相同的行爲。

如果您在任何地方使用反射,還需要考慮一些差異。

1

第一個爲您的類的所有實例創建一個副本,但第二個爲每個實例創建ABC。

第一個可以被調用沒有對象本身。