Java の == による文字列比較の落とし穴
Java では、文字列を扱うときに等価演算子 (==) を使用して比較します。予期せぬ結果を招く可能性があります。 2 つの文字列が同一に見えても、比較の結果が false になる場合があります。この動作の背後にある理由を理解することは、エラーを回避するために重要です。
問題の核心は 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() を使用した 2 番目の比較では、オブジェクト参照を評価するため、正しく true が返されます。文字列値。不正確な結果を回避し、正確な論理結果を保証するには、値ベースの比較にequals()を使用することが不可欠です。
以上がJava で文字列を比較するときに \'==\' が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。