Java Object에 대해서 정말 알고 계신가요?

2468 단어 javaobject
안내: 평소의 코딩에서hashCode()와 equals()의 사용 장면은 어떤 것들이 있습니까?clone 딥 복제는 어떻게 실현합니까?wait () 와 notify () 는 어떤 작용을 합니까?finalize () 방법은 무엇입니까?코딩에 많이 쓰이지 않는 것 같아서 중요하지 않지만 저처럼 잘 알고 싶은 게 있나요?기초 중의 기초니까.
다음은 간단하고 전면적인 개요를 제시한다.
1. hashCode()와 equals()
public boolean equals(Object obj) {return (this == obj);}
public native int hashCode();
1. equals () 방법이 override될 때hashCode () 도 override됩니다.
2. equals()가true로 돌아오면hashcode는 반드시 같다.즉, 동일 (동일) 한 객체에는 동일 해시 코드 (또는 해시 코드) 가 있어야 합니다.
3. 두 대상의hashCode가 같다면 반드시 같지는 않다.
4. 집합하여 찾을 때hashcode는 대상의 비교 횟수를 크게 낮추고 검색 효율을 높일 수 있습니다!
중복 원소를 판단할 때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 ()
• 개체 자물쇠를 가져와야만 호출할 수 있습니다. 그렇지 않으면 Illegal MonitorStateException 이상을 던집니다.
• 언제든지 대상의 제어권 (monitor) 은 한 라인에서만 가질 수 있다.
스레드가 제어권을 얻는 방법은 세 가지가 있다.
1. 객체의 동기화 인스턴스 방법을 실행합니다.
2. 대상이 대응하는 클래스의 동기화 정적 방법을 실행한다.
3. 객체에 대한 동기화 잠금을 설정한 동기화 블록을 실행합니다.
객체에 대한 동기화 잠금 예제를 수행합니다.

  synchronized (pepoleObject) {
    pepoleObject.notifyAll();
    pepoleObject.wait();
  }

4. finalize()
쓰레기 수거기가 이 대상에 대한 더 많은 인용이 존재하지 않는다고 판단할 때, 대상의 쓰레기 수거기에서 이 방법을 호출하면 한 번만 호출할 수 있습니다.대상이 회수될 때 시스템 자원을 설정하거나 다른 제거를 실행해야 합니다. 하위 클래스는finalize 방법으로 다시 작성합니다.
지금까지 Java Object에 대해 정말 알고 계셨나요? 바로 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되었으면 좋겠습니다. 저희도 많이 사랑해 주세요.

좋은 웹페이지 즐겨찾기