首頁 >Java >java教程 >為什麼在 Java 中比較字串時「==」失敗?

為什麼在 Java 中比較字串時「==」失敗?

Linda Hamilton
Linda Hamilton原創
2024-11-30 04:40:14111瀏覽

Why Does

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn