我learned字符串文字不總是垃圾回收,所以我不知道這兩個代碼示例是否比較性能的情況下?存儲字符串文字的長度是否會影響性能?
length()只是返回String的內部字符數組的大小,所以只要一個String不是新創建的,就不需要計算。
// example 1
private static final int BAR_LENGTH = "bar".length();
public int foo() {
return BAR_LENGTH;
}
// example 2
public int foo() {
return "bar".length();
}
也許我在這裏解釋代碼有點過於簡單,但是示例2在性能上明顯更差,因爲每次調用foo()時都會生成一個新的「String」欄。 – Zircon
沒有區別。如果您檢查長度,則返回字符串所支持字符數組的長度屬性。 – SMA
@Zircon - 每次都不會創建一個新的字符串。 JLS保證「bar」文字由唯一一個對象表示。 –