자바 의 Object 는 무엇 입 니까?Object 에 대한 이해 와 응용
3775 단어 Java
public native int hashCode();
equals:
public boolean equals(Object obj) {
return (this == obj);
}
hashCode 는 native 방법의 밑바닥 에서 실현 되 었 다
1. equals() , hashCode()
2. equals() , ==
3. hashCode() , HashMap
4. ( ): hashCode() int !
5. hashCode() equals() 5 :
---> equals() true, equals() , true
---> , !
--->x.equals(y) y.equals(z) true, :x.equals(z) true
--->x.equals(y) y.equals(x) 。 null, false
1.equals 와 hashCode 방법 으로 equals()방법 을 다시 쓰 는 것 은 기본적으로 비교 대상 의 주소 이 고==등가 연산 자 를 사용 합 니 다.그러나 우리 의 정상 적 인 개발 로 볼 때 대상 주 소 를 비교 하 는 것 은 무의미 하 다.
@Override
public boolean equals(Object obj)
{
if(obj == null) {
return false;
}
// true, false
if(this == obj){
return true;
}
//
if(this.getClass() != obj.getClass()){
return false;
}
Student student = (Student)obj;
return id==student.id;
}
@Override
public int hashCode() {
return this.getId();
}
2.toString 방법 은 대상 의 hashCode 값()을 되 돌려 주 고 대상 을 표시 합 니 다.
public String toString() {// +“@”+
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
3.1clone 방법 은 다음 과 같은 요점 이 있다.
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
4.wait 와 notify 방법-wait,notify 든 notify All()이 든 모두 모니터 대상(잠 금 대상)이 호출 해 야 합 니 다.쉽게 말 하면 그들 은 모두 동기 코드 블록 에서 호출 되 었 습 니 다.그렇지 않 으 면 이상 을 던 질 것 입 니 다!-notify()가 깨 우 는 것 은 대기 열의 한 스 레 드(어느 스 레 드 를 깨 울 지 확실 하지 않 음)입 니 다.notify All()이 깨 우 는 것 은 대기 열의 모든 스 레 드-wait()의 스 레 드 가 깨 어 나 면 4 가지 상황 에서 이 스 레 드 가 중단 될 수 있 습 니 다.
a.wait()
b. notify()
c. notifyAll()
d. wait()
5.finalize 방법 finalize()방법 은 쓰레기 수 거 기 를 제거 하기 전에 호출 됩 니 다.그러나 이 방법 은 언제 호출 될 지 모 르 고 불확실 성 이 있 기 때문에 다시 쓰 는 것 을 권장 하지 않 습 니 다.이 방법 은 gc 가 시작 되 고 대상 이 회수 되 었 을 때 호출 됩 니 다.gc 는 대부분의 대상 을 회수 할 수 있 습 니 다(new 에서 나 온 대상,gc 는 모두 해결 할 수 있 습 니 다.일반적인 상황 에서 우 리 는 new 이외 의 방식 으로 대상 을 만 들 지 않 습 니 다).그래서 일반적으로 프로그래머 가 finalize 를 실현 할 필요 가 없습니다.특수 한 상황 에서 프로그래머 가 finalize 를 실현 해 야 합 니 다.대상 이 회수 되 었 을 때 일부 자원 을 방출 해 야 합 니 다.예 를 들 어 socket 링크 는 대상 이 초기 화 될 때 만 들 고 전체 수명 주기 에 유효 하 다 면 finalize 를 실현 하고 이 링크 를 닫 아야 합 니 다.
finalize 를 사용 하려 면 슈퍼.finalize()를 호출 하 는 것 에 주의해 야 합 니 다.한 대상 의 finalize()방법 은 한 번 만 호출 될 수 있 으 며,finalize()가 호출 되 는 것 은 gc 가 이 대상 을 즉시 회수 하 는 것 을 의미 하지 않 기 때문에 finalize()를 호출 한 후에 이 대상 은 회수 되 지 않 아 도 되 고,진정 으로 회수 되 어야 할 때 가 되 었 습 니 다.앞에서 한 번 호출 되 었 기 때문에 finalize()를 호출 하지 않 아 문제 가 발생 하지 않 습 니 다.따라서 finalize()방법 을 사용 하지 않 는 것 을 추천 합 니 다.석조 함수 와 다 릅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.