以下のエディターは Java についての記事をお届けします オブジェクト本当に理解していますか?編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして、一緒に見てみましょう
はじめに: 日常のコーディングにおける hashCode() とquals() の使用シナリオは何ですか?クローンディープコピーを実装するにはどうすればよいですか? wait() と Notice() は何をするのでしょうか? Finalize() メソッドは何をするのでしょうか?コーディングではあまり使われず、重要ではないようですが、私のように詳しく知りたい人はいますか?やっぱり基礎中の基礎ですね。
以下は単純かつ包括的な概要です:
1. hashCode() とquals()
public boolean equals(Object obj) {return (this == obj);} public native int hashCode();1 .2.equals() が true を返す場合、ハッシュコードは等しい必要があります。つまり、等しい (同一の)
オブジェクト は、等しいハッシュ コード (またはハッシュ コード) を持たなければなりません
3. 2 つのオブジェクトの hashCode が同じである場合、それらは必ずしも同じである必要はありません。 4. コレクション内を検索する場合、ハッシュコードを使用すると、オブジェクト比較の数が大幅に削減され、検索効率が向上します。
重複する要素を特定するときは、hashcode() メソッドを通じてバケットの位置を直接特定し、その位置に要素がある場合は、equals() メソッドを呼び出してそれらが等しいかどうかを判断します。各要素を走査してequals()を比較する代わりに!2. clone()ディープコピー
public class Animal implements Cloneable { private int height; private int age; public Animal(int height, int age){ this.height = height; this.age = age; } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } } public class People implements Cloneable { private int height; private int age; private Animal a; public People(int height, int age,Animal a){ this.height = height; this.age = age; this.a = a; } @Override public Object clone() throws CloneNotSupportedException { People p = (People) super.clone(); p.a = (Animal) a.clone(); return p; } } Animal a1 = new Animal(100,3); People p1 = new People(173,24,a1); //深复制 People p2 = (People) p1.clone();
3. wait()とnotify()
• オブジェクトロックを取得した後にのみ呼び出すことができ、それ以外の場合はIllegalMonitorStateExceptionがスローされます • 任意の 1 つ ある時点で、オブジェクト (モニター) の制御は 1 つのスレッドのみが所有できます。スレッドが制御を取得するには 3 つの方法があります:
1. オブジェクトの同期されたインスタンス メソッドを実行します。 2. オブジェクトの対応するクラスの同期staticメソッドを実行します。
3. オブジェクトに同期ロックを追加する同期ブロックを実行します。 このオブジェクトに対して同期ロックを実行する例:synchronized (pepoleObject) { pepoleObject.notifyAll(); pepoleObject.wait(); }
4.finalize()
ガベージコレクターがオブジェクトへの以上がJavaオブジェクトのコード例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。