ホームページ > Java > &#&チュートリアル > Java で文字列を比較するときに \'==\' が失敗するのはなぜですか?

Java で文字列を比較するときに \'==\' が失敗するのはなぜですか?

Linda Hamilton
リリース: 2024-11-30 04:40:14
オリジナル
109 人が閲覧しました

Why Does

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート