메소드3 java.lang.Object 주요 메소드 [1/1] 모든 클래스가 기본적으로 상속받는 Object 클래스의 주요 메소드입니다. [ hashCode() ] 인스턴스가 저장된 힙 영역의 주소값을 해쉬값으로 변환해서 반환 서로 다른 인스턴스 또는 객체는 다른 주소에 저장돼 있으므로 다른 값 출력 package study.first; public class Study { public static void main(String[] args) { Example a = new Example(); Example b = new Example(); System.out.println(a.hashCode()); System.out.println(b.hashCode()); } } class Example { int a = 1; } [ getClass() ] 인스턴스가 가지고.. ▸JAVA/라이브러리(API) 2019. 12. 10. 객체의 등가성(객체 비교)_hashCode 메소드 [4/4] [ hashCode 메소드 ] 객체 내부의 필드 값을 hash값으로 바꿔 hash값을 리턴해줌 같은 값은 무조건 동일 hash값을 가짐 하지만 hash값이 동일하더라도 값이 다를 수 있기 때문에 equals 메소드와 혼용 필수 equals 메소드보다 비교 연산이 빠르기 때문에 hashCode를 먼저 비교 후 equals 수행 동일한 객체는 무조건 같은 hash값을 가지지만 낮은 확률로 서로 다른 두 객체가 같은 hash값을 가질 수도 있습니다. 따라서 hashCode 메소드를 통해 동일한 hash값이 도출되면 equals 메소드를 다시 수행해 값을 비교해줍니다. 이렇게 하는 이유는 hash값을 도출하는 연산이 더 빨라서 값이 다른 객체는 대부분 hashCode에서 걸러낼 수 있기 때문입니다. 추가로 같.. ▸JAVA/기본 문법 2019. 12. 10. 객체의 등가성(객체 비교)_equals 메소드 [3/4] [ equals 메소드 ] 객체 내부의 값을 모두 비교해 동일 값을 가진 객체를 판별하는 메소드 equals 메소드는 모든 클래스의 기본적인 부모 클래스가 되는 Object 클래스 포함된 메소드입니다. 하지만 기본 메소드를 그대로 사용할 경우 올바른 비교가 되지 않기 때문에 실제 사용 시에는 해당 클래스에 맞도록 오버라이딩 해서 사용해줍니다. 물론 오버라이딩 하지 않고 다른 함수를 만들어 사용해도 무방합니다만, 혼선을 방지하기 위해 그냥 오버라이딩을 해주는 쪽이 좋습니다. 먼저 Object에 포함된 기본 equals 메소드의 코드를 보면 객체 자체를 관계 연산자(==)로 비교합니다. 따라서 내부적으로 같은 값을 가진 객체 2개라도 다른 메모리 주소를 가지기 때문에 서로 다른 값으로 인식합니다. 자기 자.. ▸JAVA/기본 문법 2019. 12. 10. 이전 1 다음 💲 추천 글 반응형