Javaの等しいと==の違い
Javaのデータ型は、2つのカテゴリに分類できます。
1。プリミティブデータ型とも呼ばれる基本データ型。バイト、ショート、チャー、int、long、float、double、boolean
二重記号(==)を適用するそれらの比較は、その値と比較されます。
2.コンパウンドデータ型(クラス)
(==)と比較すると、メモリ内のストレージアドレスを比較します。したがって、それらが同じ新しいものからのオブジェクトでない限り、比較後の結果は真であり、それ以外の場合、比較後の結果は偽です。 Javaのすべてのクラスは、基本クラスのオブジェクトから継承されます。等しい方法は、オブジェクトのベースクラスで定義されます。この方法の最初の動作は、比較オブジェクトのメモリアドレスですが、一部のクラスライブラリでは、この方法が上書きされます。たとえば、文字列、整数、および日付は、これらのクラスで独自の実装を持っており、ヒープメモリの比較クラスのストレージアドレスではなくなりました。
等しいデータ型を等しい比較のために、Equalsメソッドを上書きせずに、それらの比較はメモリ内のストレージ場所のアドレス値に基づいています。等しいオブジェクトの方法も二重等号(==)と比較されるため、比較後の結果は二重等記号(==)の結果と同じです。
Javaの違いは、=、==です
1。==と等しい違い
1。==はオペレーターです
2。equalsは文字列オブジェクトの方法です
通常、比較には2つのタイプがあります
1。基本的なデータ型の比較
2。参照オブジェクトの比較
1。基本的なデータ型の比較
==および等しい値は、値が等しいかどうかを比較します。等しい、それは真であり、そうでなければそれは偽です
2。参照オブジェクトの比較
==および等しいものは、スタックメモリ内のアドレスが等しいかどうかと比較されます。等しい場合、それは本当です、そうでなければそれは偽です。
知らせ:
1。文字列は特別な参照データ型です。 ==文字列オブジェクトの参照アドレスが同じかどうかを比較し、スタック内のコンテンツが一貫しているかどうかを比較します。
文字列ss = new String( "ABC"); string sss = new String( "ABC"); if(ss == sss){system.out.println( "ss == sss is true"); } if(ss.equals(sss)){system.out.println( "ss equals sss is true"); }コンソール出力:
ss!= sss
SSはSSSに等しくなります
スタック内のSSとSSのメモリアドレスが異なることを示しますが、ヒープ内の内容は同じです。
文字列ss = new String( "ABC");
文字列ssss = ss;
//スタック内のSSおよびSSSSの参照アドレスが同じであるかどうかを判断} else {system.out.println( "ss!= ssss"); } //ヒープ内のssとssssの内容が同じであるかどうかを判断} else {system.out.println( "ss not not not ssss"); }コンソール出力:
SS == SSSS
SSはSSSSに等しくなります
これは、SSとSSSSが同じオブジェクトであり、ヒープに同じコンテンツがあることを示しています
2。参照オブジェクトの比較
testbean obj1 = new testbean(); testbean obj2 = new testbean(); testbean obj3 = obj1; if(obj1 == obj2){system.out.println( "obj1 == obj2"); } else {system.out.println( "obj1!= obj2"); } if(obj1 == obj3){system.out.println( "obj1 == obj3"); } else {system.out.println( "obj1!= obj3"); }コンソール出力:
obj1!= obj2
obj1 == obj3
これは、obj1とobj2が同じオブジェクトではなく、スタック内の参照アドレスが異なることを意味します
obj1とobj3は同じオブジェクトであり、スタック内の参照アドレスは同じです
2。= equals ==の差
=割り当てを表します。つまり、右側の値を左側の変数に割り当てます。等しいと==は操作です
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!