在Java 中比較宣告為Final 的== 字串
在Java 中使用相等運算子(==) 比較字串時,結果根據字串是否聲明為最終字串而有所不同。
Final字串
當字串被宣告為final時,編譯器透過將值內聯為編譯時常數表達式來最佳化它。這意味著字串值在編譯時確定並直接儲存在字節碼中,而不是在運行時動態分配。
Final Strings 的行為
中如果字串宣告為Final,則比較表達式concat == "string" 傳回true,因為:
非最終字串
相反,非-final 字串不是內聯的,而是在運行時動態分配的。連接操作會建立一個新的 String 對象,它與記憶體中的文字「字串」不同。因此,比較表達式 concat == "string" 傳回 false。
驗證
要確認此行為,可以比較非最終和最終的字節碼字串版本:
非最終版版本:
最終版本:
因此,將字串宣告為Final 並使用編譯時常數表達式初始化它們會影響由於字串文字的內聯和駐留,使用 == 進行相等比較的結果。
以上是在 Java 中將字串宣告為「final」會影響「==」比較嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!