ホームページ  >  記事  >  Java  >  Javaオブジェクトのコード例を詳しく解説

Javaオブジェクトのコード例を詳しく解説

黄舟
黄舟オリジナル
2017-03-30 10:44:011345ブラウズ

以下のエディターは 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()

ガベージコレクターがオブジェクトへの

参照がないと判断すると、オブジェクトはガベージコレクションされます。はコントローラーによって呼び出され、一度だけ呼び出すことができます。オブジェクトがリサイクルされ、システム リソースの構成やその他のクリーンアップの実行が必要な場合、サブクラスは Finalize メソッドをオーバーライドして実装します。

以上がJavaオブジェクトのコード例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。