這是一個概念性問題。我知道字符串是不變的;它們的值在創建後無法更改。考慮這個宣言 -靜態字符串vs Java中的字符串
private final static String ABC = "abc";
VS
private final String ABC = "abc";
爲什麼在性能方面更好的的第一個?
如果ABC的價值沒有在課堂上直接更新,是否有任何理由需要第二個?
在此先感謝。
這是一個概念性問題。我知道字符串是不變的;它們的值在創建後無法更改。考慮這個宣言 -靜態字符串vs Java中的字符串
private final static String ABC = "abc";
VS
private final String ABC = "abc";
爲什麼在性能方面更好的的第一個?
如果ABC的價值沒有在課堂上直接更新,是否有任何理由需要第二個?
在此先感謝。
第一個是〜更好〜因爲在所有實例中都不會有額外的String
引用。因爲它們都是常量表達式,所以在類字節代碼中(使用它們的值時)會得到相同的行爲。
如果您在任何地方使用反射,還需要考慮一些差異。
第一個爲您的類的所有實例創建一個副本,但第二個爲每個實例創建ABC。
第一個可以被調用沒有對象本身。
你是否理解'static'和non-'static'之間的區別? – 2014-09-26 21:13:11
字符串_immutable_,但不一定_constant_。 – iamnotmaynard 2014-09-26 21:15:22
@oliver Charlesworth - 是的,我瞭解靜態和非靜態之間的區別。這個問題是針對STRINGS的。感謝所有將問題標記爲重複的人,但提供的重複鏈接無法回答我的問題。 – ND27 2014-09-26 21:48:19