Java 中== 的字串比較陷阱
在Java 中,處理字串時,使用相等運算子(==)進行比較可能會導致意想不到的結果。儘管兩個字串看起來相同,但比較可能會產生錯誤。理解這種行為背後的原因對於避免錯誤至關重要。
問題的癥結在於 Java 的物件導向架構。 Java 中的字串作為物件儲存在記憶體中,相等運算子 (==) 比較對這些物件的引用而不是它們的內容。因此,即使實際的字串值相同,引用位址也可能不同,從而導致比較錯誤。
要準確比較字串值,應該利用 String 提供的 equals() 方法班級。此方法直接比較字串內容,確保偵測到真正的相等性。需要注意的是,在需要基於值的比較的自訂類別中,應該重寫 equals() 方法。
範例:
考慮以下程式碼片段:
String[] parts = {"231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"}; if ("231" == parts[0]) { // Comparison using == System.out.println("False! Why?"); } if ("231".equals(parts[0])) { // Comparison using equals() System.out.println("True"); }
使用== 的第一個比較在比較物件引用時產生false,而使用equals() 的第二個比較在計算物件參考時正確傳回true字串值。必須使用 equals() 進行基於值的比較,以避免錯誤結果並確保準確的邏輯結果。
以上是為什麼在 Java 中比較字串時「==」失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!