ショートステップ、千マイル;ない小川、jianghaiに。
Java言語の基礎
Javaの==とequalsメソッド
平等のための==比較のための値
変数の基本データ型に適用される場合は直接彼らの「値」を比較する格納された等しいです。
参照型の変数に適用される場合、アドレス比較は、先の尖っています。
方法に等しいため、なおは:比較が同じオブジェクトであるかどうか、この方法は、変数の基本データ型に適用することはできないに等しいオブジェクトクラスの継承に等しいです
いかなる方法に等しいの書き換えがない場合、アドレス比較は、オブジェクト型の変数ポイントへの参照です。
そのような書き換えに基づく等の文字列、日付、としてメソッドに等しい、オブジェクトの内容を指摘比較。
- 使用「==」と「イコール()」メソッドの文字列を比較します
「==」二つの変数(オブジェクト)メモリ内の最初のアドレスが同じである比較します。
「()に等しい」比較文字列の内容に含まれては同一です。
パブリッククラスのテスト{ 公共の静的な無効メイン(文字列[] args){ // TODO自動生成方法スタブ ストリングS1 =「ABC」。 文字列s2を= "ABC"; 文字列S3 =新しいString( "ABC"); System.out.println(S1 == S2)。 System.out.println(s1.equals(S2))。 System.out.println(S1 == S3)。 System.out.println(s1.equals(S3))。 } }
プログラムの出力:
真 真 偽 真
注:この場合のStringBuffer
パブリッククラスのテスト{ 公共の静的な無効メイン(文字列[] args){ // TODO自動生成方法は、スタブ のStringBuffer STR1 =新しいStringBufferの( "A")。 StringBufferのSTR2 =新しいStringBufferの( "A"); System.out.print(str1.equals(STR2))。 } }
プログラムの出力:
偽
理由:
StringBufferクラスは、このメソッドを再定義しない等しいので、このメソッドは、Objectクラスから来て、等しいObjectクラスのメソッドは、「アドレス」を比較するために使用され、それが偽に等しいです。
- 非文字列変数の場合、
「==」との役割は、この方法が同じオブジェクトへの2つの参照変数ポイントを比較するために使用された最初のヒープメモリ内のオブジェクトのアドレスを比較するために使用されていると同じで「等しいです」。
クラスA { int型A = 1。 文字列str = "ABC"; 公共ボイド(){を食べる のSystem.out.println( "!食べます"); } } publicクラステスト{ 公共の静的な無効メイン(文字列[] args){ // TODO自動生成方法スタブ A OBJ1 =新しいA(); A OBJ2 =新しいA(); System.out.println(OBJ1 == OBJ2)。 System.out.println(obj1.equals(OBJ2))。 } }
プログラムの出力:
偽 偽
拡張子:
Stringクラスの再定義この方法に等しいが、比較は、アドレスの代わりに、値です。
ブール、文字、バイト、ショット、整数、ロング、フロート、ダブルおよびその他の参照変数としてパッケージタイプの基本的なタイプの場合、==多くのアドレスですが、より多くのコンテンツイコールです。