導入
オブジェクトクラス:このクラスjava.lang.javaは、デフォルトですべてのクラスで継承される親クラスです。
オブジェクトクラスで一般的に使用される3つのメソッド: toString() 、 equal() 、 hashCode()
1。トストリング()メソッドオブジェクトの自己説明とオブジェクトの自己紹介
get()メソッドを使用してインスタンス変数を印刷するのが面倒なため、オブジェクトの自己記述中に、 toString()単純さに使用されます。
public string toString(){return "learn well" + getno() + "name" + getName();} System.out.println(s); System.out.println(s.toString());
印刷:
a。基本的なデータ型の場合、その値を直接印刷します
b。データ型を参照するときにtoString()電話して印刷
オブジェクトクラスのtoString()メソッドが書き換えられない場合、オブジェクトを直接印刷し、コンソールで取得した結果は次のとおりです。
フルネーム @オブジェクトを含むハッシュコード
2。equals()メソッドequals()は()hashcode()を書き換える必要があります。
Equals() 、2つのオブジェクトの内容または2つのオブジェクトの内容を比較します。 hashCode()はオブジェクトの内部アドレスであり、整数です。
== equals()の違い?
回答:==本質的な比較はバイナリで、基本データ型は数値を比較し、参照データ型はアドレスを比較します
Equals()は、オブジェクトクラスのequals()および文字列クラスのequals()に分割されます。オブジェクトクラスのequals()は、参照タイプの比較==に相当します。文字列クラスのequals()は、オブジェクトクラスのequals()メソッドをオーバーライドし、リテラル値を比較します。
intanceofはクラス名を決定するか、反射を使用する場合があります
オブジェクトの参照変数名式のオブジェクトの参照変数名インスタンス、オブジェクトの参照変数名がクラスまたはベースクラスのオブジェクトである場合、返品値がまだ真である場合。
カスタムequals()メソッド:
1。同じタイプ
2。独自の比較ルールを定義します
public boolean equals(object object){// equals equalstest =(equalttest)object; if(equalttest.getclass()== equalttest.class){//?????????????????????? true;} else {return false;}} else {return false;}}3. HashCode()メソッドは、検索とインデックス検索の実装を加速するために使用されます(クエリアルゴリズム、ストレージアルゴリズム)
public int hashcode(){return this.name.hashcode()*13 + new interger(getage).hashcode()*12;}ハッシュコードの2つの原則:
1。2つのオブジェクトの返品値がequals()メソッドが真である場合、 hashCode()メソッドも戻り値が同じであることを確認する必要があります。
2。equals equals()を使用して、オブジェクトで使用されるプロパティを比較します。それらのすべてを使用して、 hashCode()を計算する必要があります。
HashCode()Hash Algorithm
必要:
1。HashCode hashCode()の返品値は同じであり、 equals()返品値も同じでなければなりません。
2。hashcode hashCode()使用する属性と、 equals()メソッドで使用する属性を書き換えます。
注:ハッシュコードは同じであり、等しいものは必ずしも同じではありません。
ハッシュコードはフォルダーの判断に使用され、等しいものがファイルの判断に使用されます。
hashCode()メソッドがオーバーライドされていない場合、オブジェクトのアドレスに基づいてデフォルトのHashCode()メソッドが見つかります(キー値はオブジェクトのアドレスです)
hashCode()メソッドを書き換えた場合、同じオブジェクトであるかどうかを判断するために使用できません。
System.identityHashCode (オブジェクトの参照名)を使用できます。ハッシュコードが同じ場合、それは同じオブジェクトです。
System.out.println(System.identityHashCode(对象的引用名));
hashCode()がない場合、そのオブジェクトのハッシュコードはオブジェクトアドレスによって計算されます。
System.out.println(对象引用名.hashCode());
注:要素がハッシュセットコレクションに存在するかどうか、および操作依存性を削除する方法は、要素のhashCode()とequals()です。
要約します
上記は、あなたのためにコンパイルされたJavaの親オブジェクトの3つの一般的な方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。