1、==
(1)基本データ型:比較値が等しいかどうか
int型、A = 1 ; INT B = 1 。 システム。アウト .println(== B)。
trueを返します。
(2)参照データ型は、比較は同じオブジェクトかどうかです。
学生STUDENT1 = 新しい学生(" 201911 "、" ZHAI " ); 学生student2 = 新しい学生(" 201912 "、" 張" ); システム。アウト .println(STUDENT1 == student2)。
リターンはfalse。
異なるオブジェクトの2つのオブジェクトの基準点。
学生STUDENT1 = 新しい学生(" 201911 "、" ZHAI " ); 学生student2 = 新しい学生(" 201912 "、" 張" ); システム。アウト .println(STUDENT1 == student2)。
trueを返します。
オブジェクト参照は異なっているが、彼らは同じオブジェクトを指しています。
2に等しい()メソッド
(1)に等しい()メソッドは、変数の基本データ型に適用することはできません
(2)に等しい()メソッドは、比較が同じオブジェクトであるかどうか、参照データ・タイプに適用されます。
ビューのソースコードにクラスObjectから継承されます。等しいです:
パブリックブール等しい(オブジェクトobj){ リターン(この == OBJ)。 }
見て、その本質が使用することができるよう==比較データ型は、同じオブジェクトへの参照です。
(3)一部のクラスは、メソッドが(例えば:文字列クラス)書き直されまし等しいです。
ソースを表示Stringクラス:
パブリックブール等しい(オブジェクトanObject){ 場合(この == anObject){ 戻り 真。 } 場合(文字列のinstanceof anObject){ 文字列anotherString = (文字列)anObject。 INT、N = value.length。 もし(N == anotherString.value.length){ チャー V1 [] = 値。 チャー V2 [] = anotherString.value。 int型私は= 0を。 同時に(!N-- = 0 ){ 場合(!V1 [I] = V2 [i])と リターン 偽。 I ++ ; } を返す 真。 } } を返す 偽。 }
オブジェクトは同じオブジェクトであるか否かを、オブジェクトの値の比較。
文字列の文字列1 = 新しい文字列(" jiayou " ); 文字列string2の = 新しい文字列(" jiayou " ); システム。アウト .println(string1.equals(string2の)); // 真の システム。アウト .println(文字列1 ==文字列); // 偽
二つのオブジェクトの値が同じであるが、2つのオブジェクトが同じオブジェクト(異なるアドレスのオブジェクト)ではないが、二つのオブジェクト、独自のオブジェクトへのオブジェクト参照点を作成したため。
(4)カスタムメソッドに等しく、比較対象値は等しいです。
パブリックブール等しい(オブジェクトobj){ // 同じオブジェクトが直接である場合、現在のオブジェクトの転送を分析し、 IF(この == 比較が同じオブジェクトであるか否かをOBJ){//参照データ型、 リターン trueに; } // オブジェクトが車種に渡された判決がある場合は、直接渡す場合ではない のiF(!車のinstanceof(OBJ)){ リターン 偽; } // 車両基準ダウンキャストobjをします、あなたは車固有のコンテンツにアクセスするか、のみ可能共通のコンテンツアクセス 車両V = (ビヒクル)OBJを、 返す この .vType && == v.vType この .vNum == v.vNum; //基本データ型を、基本データ型の値を比較 }
書き換えの方法を等しくした後に、オブジェクトが2つのオブジェクトを比較するためにequalsメソッドの機能は、オブジェクトの値が等しいかどうか同じになります。