Java Object에 대해서 정말 알고 계신가요?
다음은 간단하고 전면적인 개요를 제시한다.
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에 대해 정말 알고 계셨나요? 바로 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되었으면 좋겠습니다. 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.