아래 에디터가 Java 객체에 대한 기사를 가져옵니다. 정말 이해하셨나요? 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 에디터를 따라가서 살펴보겠습니다
소개: 일상적인 코딩에서 hashCode()와 equals()의 사용 시나리오는 무엇입니까? 클론 딥 카피를 구현하는 방법은 무엇입니까? wait()와 inform()은 무엇을 합니까? finalize() 메소드는 무엇을 합니까? 코딩에서는 많이 사용되지도 않고 중요하지도 않은 것 같은데, 저처럼 좀 더 알고 싶은 분이 계실까요? 결국 그것은 재단의 기초입니다.
다음은 간단하고 포괄적인 요약입니다.
1. hashCode() 및 equals()
public boolean equals(Object obj) {return (this == obj);} public native int hashCode();
1. equals() 메서드가 재정의되면 hashCode()도 재정의되어야 합니다.
2. equals()가 true를 반환하면 해시코드가 동일해야 합니다. . 즉, 동일(동일) 객체 는 동일한 해시 코드(또는 해시 코드)를 가져야 합니다
3. 두 객체의 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() 및 inform()
스레드가 제어권을 얻는 방법에는 세 가지가 있습니다.1. 개체의 동기화된 인스턴스 메서드를 실행합니다. 2. 해당 객체의 클래스에 대한 동기화 static
메소드를 실행합니다. 3. 객체에 동기화 잠금을 추가하는 동기화 블록을 실행합니다.synchronized (pepoleObject) { pepoleObject.notifyAll(); pepoleObject.wait(); }4.finalize()
가비지 수집기가 실행될 때 이 메서드는 개체에 대한 참조가 더 이상 없다고 판단될 때 개체의 가비지 수집기에 의해 한 번만 호출됩니다. 객체가 재활용되어 시스템 리소스를 구성하거나 다른 정리를 수행해야 하는 경우 하위 클래스는 finalize 메서드를 재정의하여 이를 구현합니다.
위 내용은 Java 객체의 코드 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!