私たちは、それはまた、ルートクラスとして知られており、Objectクラスは、すべてのクラスの親である、ということを知って、祖先。だから、私たちはObjectクラスの最も一般的に使用される方法の2を見てみるには、使用する方法です。
1つの.toString方法:
クラスのtoString()メソッドの戻りアドレス値は、オブジェクトではない、このクラスは、toString()メソッドをオーバーライドする場合、オブジェクトクラスの、toString()メソッドは、オブジェクトのアドレスをデフォルト値を返します。
パブリック クラスTEST5は{行われるべき 公共 静的 ボイド{メイン(文字列[]引数)を 人P1 = 新しい新;人() のSystem.out.println(p1.toString()); // のtoString()メソッドをオーバーライドしないオブジェクトを返しますアドレス値cn.itcast.Person@3feba861 } }
次は人ののtoString()メソッドを書き換えます
パブリック クラス人{ プライベート文字列名; プライベート int型の年齢; // 重写のtoString()方法 @Override 公共の文字列のtoString(){ リターン "姓名: "+名+"年龄:" + 年齢; } パブリック人(){ } 公共人(文字列名、int型の年齢){ この .nameの= 名前。 この .age = 年齢; } パブリック文字列のgetName(){ 戻り名。 } 公共 のボイドsetName(文字列名){ この .nameの= 名前。 } 公共 INT getAge(){ 戻り年齢; } 公共 ボイド setAge(int型の年齢){ この .age = 年齢。 } }
toStringメソッドで見てみましょうは()の値を返します。
パブリック クラスTEST5は{行われるべき 公共 静的 ボイドメイン(文字列[]引数){ 人P1 = 新しい新;人() のSystem.out.println(p1.toString()); // のtoStringを書き換える()メソッド、メソッドの戻り戻り値 人物P2 = 新しい新規人物( "AAA"、18 ); のSystem.out.println(p2.toString()); // 名前:ヌル年齢:0 // 名前:AAA年齢:18 } }
2. equalsメソッド:
次のようにソース(等しい)メソッドは、次のとおりです。
パブリック ブールequali(オブジェクトobj){ 戻り 、この == OBJと、 }
オブジェクトクラスは等しいので==比較対象のアドレス値であるので、()の比較は意味があるように書き換えなければならず、デフォルトのアドレス値です。具体的に、どのように我々は2つのオブジェクトを比較する場合と同じに基づいてものを見るために、リライトします。
例えば:私たちは、同じ2人、2人の名前と年齢が同じであればあることが必要です。
// 重写人类的等号()方法 @Override 公共 ブール等しい(オブジェクトobj){ 戻り 、この == .nameのを((人物)OBJ).nameの&& この .age == ((人物)OBJ).age。 }
再び等号()メソッドをテストします。
パブリック クラスTEST5 { 公共 静的 ボイドメイン(文字列[]引数){ 人物P3 = 新しい人物( "AA"、21 )。 人物P4 = 新しい人( "AA"、23 ); 人物P5 = 新しい人( "BB"、21 ); 人物P6 = 新しい人( "AA"、21 ); System.out.println(p3.equals(P4))。// 偽 のSystem.out.println(p3.equals(P5)); // 偽 のSystem.out.println(p3.equals(P6)); // 真 } }
注()メソッドに等しいです。
a.equals(B)を用いる以外、(1)この表現を用いてもよいObjects.equals(b)は、効果は同じです。
(2)は、ヌルポインタのセキュリティ方法、すなわち、許容ヌル・ポインタに等しいです。すなわち、等号()メソッドのパラメータがnullすることができ、戻り値は常にfalseです。
(3)ヌルできないメソッド呼び出し、そう空である場合、あなたはa.equalsを呼び出すことはできません()メソッド、そうでない場合はNullPointExceptionがあるでしょう。このため、我々は一般的につまり、前面の定数または既知の非nullのオブジェクトになり、書かれた "AA" .equals(文字列)の代わりにstr.equals( "AA")。