はじめに
オブジェクト クラス: このクラス java.lang.java は、すべてのクラスがデフォルトで継承する親クラスです
オブジェクト クラスでよく使用される 3 つのメソッド: toString()、equal()、hashCode()
1. toString()メソッド オブジェクトの自己記述、オブジェクトの自己紹介
オブジェクトの自己記述処理では、get()メソッドでインスタンス変数を出力するのが面倒なので、簡単のためにtoString()を使います
Public String toString(){ Return “学好” + getNo() + “姓名” + getName(); }
System .out.println(s); は System.out.println(s.toString()); と同等です
印刷時:
基本データ型が使用される場合は、値を直接印刷します。
b. データ型 toString() を参照するときに呼び出されます。
Object クラスの toString() メソッドがオーバーライドされていない場合、オブジェクトは直接コンソールに表示されます。
フルネームが含まれます。オブジェクトの @hashCode
2.equals() をオーバーライドするメソッドは hashCode() をオーバーライドする必要があります。
Equals() は 2 つのオブジェクト、または 2 つのオブジェクトの内容を比較します。これは整数です。
==とequals()の違いは何ですか?
答え: ==実際の比較はバイナリであり、基本データ型は数値と比較、参照データ型はアドレスと比較されます
Equals()はオブジェクトクラスのequals()とオブジェクトクラスのequals()に分かれています。 String クラス。オブジェクト クラスのquals() は、参照型を比較する == と同等です。String クラスのequals() は、オブジェクト クラスのequals() メソッドをオーバーライドし、リテラル値を比較します。
Instanceofはクラス名を決定するか、リフレクションを使用することもできます
オブジェクトの参照変数名instanceofクラス名式、オブジェクトの参照変数名が後続のクラス名のクラスまたは基本クラスオブジェクトである場合、戻り値値は true のままです。
カスタム equals() メソッド:
1. 型は同じです
2. 独自の比較ルールを定義します
public boolean equals(Object object){ //重写Object的equals()方法 EqualsTest equalsTest = (EqualsTest) object; if(equalsTest.getClass() == EqualsTest.class){ //??????????? if((this.name==equalsTest.name)&&(this.price== qualsTest.price)){ return true; }else{ return false; } }else{ return false; } }
3. hashCode() メソッドは、検索を高速化するために使用されますインデックス検索 (クエリ アルゴリズム、ストレージ アルゴリズム) を実装します。
Public int hashCode(){ Return this.name.hashCode()*13 + new Interger(getAge).hashCode()*12; }
hashCode の 2 つの原則:
1. 2 つのオブジェクトの equals() メソッドの比較が true を返す場合、それらの hashCode() メソッドは、戻り値は同じです。
2.quals() を使用して比較されるオブジェクト内のすべてのプロパティは、hashCode() の計算に使用される必要があります。
hashCode() ハッシュ アルゴリズム
要件:
1. hashCode() の戻り値は同じであり、equals() の戻り値も同じでなければなりません。
2. hashCode() で使用される属性と、equals() メソッドで使用される属性を書き換えます。
注: hashCode は同じですが、equals は必ずしも同じであるとは限りません。
hashCode はフォルダーを決定するために使用され、equals はファイルを決定するために使用されます。
hashCode() メソッドをオーバーライドしない場合、デフォルトの hashCode() メソッドはオブジェクトのアドレスに基づいて計算されます (キー値はオブジェクトのアドレスです)
hashCode() メソッドをオーバーライドする場合、同じオブジェクトの場合、System.identityHashCode (オブジェクトの参照名) を使用できます。hashCode が同じであれば、それは同じオブジェクトです。
System.out.println(System.identityHashCode(オブジェクト参照名));
hashCode()がない場合は、オブジェクトのアドレスからオブジェクトのhashCodeを計算します。
System.out.println(オブジェクト参照名.hashCode());
注: 要素が HashSet コレクションに存在するかどうか、および削除操作は要素の hashCode() とquals() によって異なります
概要
上記は、Java の親クラス Object の 3 つの一般的なメソッドをまとめたものです。ご質問がございましたら、メッセージを残してください。 PHPの中国語サイトです。
Java の親クラス Object の一般的なメソッドをまとめたその他の関連記事については、PHP 中国語 Web サイトに注目してください。