ホームページ  >  記事  >  Java  >  Javaのequalsと「==」の違い

Javaのequalsと「==」の違い

王林
王林オリジナル
2019-11-19 17:03:352049ブラウズ

Javaのequalsと「==」の違い

違い:

== 比較されるのは、変数 (スタック) メモリに格納されているオブジェクトの (ヒープ) メモリ アドレスです。 2 つのオブジェクトのアドレスが同じかどうか、つまり、同じオブジェクトを参照しているかどうかを判断するために使用されます。比較されるのは実際のポインタ操作です。

equals は、2 つのオブジェクトの内容が等しいかどうかを比較するために使用されます。すべてのクラスは java.lang.Object クラスを継承するため、このメソッドがオーバーライドされない限り、すべてのオブジェクトに適用できます。まだ呼び出されているのはObjectクラスのメソッドですが、Objectのequalsメソッドは==の判定を返します。

Java のデータ型は 2 つのカテゴリに分類できます:

基本データ型

byte、short、char、int、long、float、double、boolean

基本データ型間の比較では、値を比較するため、2 つの等号 (==) が必要です。

参照データ型

インターフェイス、クラス、配列、およびその他の非基本データ型

Java の文字列が属するString はクラスであるため、参照データ型です。

(==) を使用して比較する場合、メモリ内のストレージ アドレスを比較します。したがって、同じ新しいオブジェクトでない限り、比較の結果は true になり、そうでない場合、比較の結果は false になります。 。新しいものがない場合は、新しいヒープ メモリ空間が再度開かれるためです。

Entity entity = new Entity();
Entity entity1 = new Entity();
Entity entity2 = entity;
        
System.out.println(entity==entity2);
System.out.println(entity.equals(entity2));

System.out.println(entity.equals(entity1));
System.out.println(entity==entity1);

結果:

true
true
false
false

要約:

複合データの場合、型間の等しい値を比較します。equals メソッドをオーバーライドしない場合、型間の比較は依然としてメモリ内の格納場所のアドレス値であり、これは 2 つの等号 (==) の結果と同じです。 ; 上書きすると結果は上書きと同じになるというリクエストが来ます。

== の機能:

基本型: 値が同じかどうかが比較されます;

参照型: 比較されるのはアドレス値が同じかどうかです同じです。

equalsの役割:

参照型:デフォルトではアドレス値を比較するため、このメソッドをオーバーライドした後、オブジェクトのメンバ変数の値が同じかどうかを比較します。

推奨チュートリアル: Java 入門チュートリアル

以上がJavaのequalsと「==」の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Javaの設定方法次の記事:Javaの設定方法