ホームページ > Java > &#&チュートリアル > Java で「==」の代わりに「.equals()」を使用する必要があるのはどのような場合ですか?

Java で「==」の代わりに「.equals()」を使用する必要があるのはどのような場合ですか?

Patricia Arquette
リリース: 2024-12-18 09:48:10
オリジナル
469 人が閲覧しました

When Should I Use

「.equals」と「==」の違いを理解する

「=」の代わりに「.equals」を使用するという講師の主張= オブジェクトの比較では、相対的な問題が生じます。

違いは何ですか?

Java では、「==」はオブジェクト参照を比較し、2 つのオブジェクトが同じメモリ位置を占有しているかどうかを判断します。これは、値をメモリに直接保存するプリミティブ型 (例: int、double) ではうまく機能します。

ただし、非プリミティブ型 (例: String、Object) の場合、「==」はオブジェクト参照ではなくオブジェクト参照を比較します。それらの中に保存されている実際の値。これにより、不正確または不完全な等価性チェックが行われる可能性があります。

".equals" は、値ベースの等価性を判断するためにカスタム クラス用に再定義されたメソッドです。これをオーバーライドして、オブジェクトを比較するためのカスタム ロジックを指定できます。

「.equals」が優れているのはなぜですか?

講師が「.equals」を好む理由は次のとおりです。

  • 値の同等性を提供します:参照ではなくオブジェクトの実際の値。
  • カスタマイズされたロジックが可能: カスタム オブジェクトの特定の等価ルールを実装するためにオーバーライドできます。
  • Null 値を処理します適切に: null オブジェクトに対して ".equals" を呼び出すと、エラーをスローする代わりに false が安全に返されます。 error.

例: 文字列オブジェクトの比較

次のコードを考えてみましょう:

String x = "hello";
String y = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
ログイン後にコピー

"== は false と評価されます。なぜなら、x と y は、同じ文字列値を含んでいるにもかかわらず、別個のオブジェクトだからです。ただし、「.equals」は String オブジェクトの値を比較するため true を返します。

結論

一方、「==」は「.equals」より高速です。プリミティブ型の場合は、「.equals」を優先して非プリミティブ型の場合は避けるべきです。 「.equals」は、より信頼性が高く柔軟な値ベースの等価性チェックを提供し、オブジェクト参照やカスタム オブジェクト定義に関係なくコードが正しく動作することを保証します。

以上がJava で「==」の代わりに「.equals()」を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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