polarHub25 / StudyLog

0 stars 1 forks source link

item10. equals()는 항시 메모리에 존재하는 객체만을 사용한 결정적 계산만 수행해야한다. #10

Closed polarHub25 closed 7 months ago

polarHub25 commented 7 months ago

61페이지에 있는 문구인데, 이 말의 의미와 객체 식별성이랑의 차이점이 정확히 이해가 가지않습니다. 객체 식별성도 두 객체가 메모상에서 같은 객체를 가리키는지 여부이고, 논리적 동치성이 equals()는 항시 메모리에 존재하는 객체만을 사용해야 한다고 한다면, 둘의 차이점..? 은 단순히 메모리 주소값을 비교하냐, 값 자체를 비교하냐의 차이로 보면 되는건지에 대해서 이야기해봤으면 좋겠습니다

donghyeon3813 commented 7 months ago

우선 "equals()는 항시 메모리에 존재하는 객체만을 사용한 결정적 계산만 수행해야한다."의 말의 의미는 equals를 재정의 하였을 때 비교 대상이 메모리에 담겨있지 않은 값을 사용하였을 때 일관성이 깨지는 것을 방지하기 위한 내용입니다. ex) x.equals(y)를 반복해서 호출하였을 때 항상 같은 값을 반환해야 한다.

객체의 식별성은 단순히 객체 간의 서로 참조하고 있는 메모리 주소 값을 비교하여 같은 값을 가리키는 지를 확인하는 것입니다.

단순히 말하자면 메모리 주소값을 비교하냐, 값 자체를 비교하냐의 차이로 보면 되는 것이고 61p 문구 같은 경우는 값 자체를 비교할 때의 하나의 조건이라 할 수 있을 것 같습니다.