인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Language/Java (JVM)

☕ 자바 객체의 hashCode는 고유하지 않다 ❌

객체의 hashCode는 고유하지 않다 자바에서는 포인터를 철저히 숨겼기 때문에 직접적인 객체의 주소 원래값을 얻을수는 없다. 그래서 자바에서는 참조 변수의 주소값을 표현하기 위해 위와 같이 해시코드를 이용한다. 보통 해싱 알고리즘 상 서로 다른 두 주소값을 가지고 있는 객체는 결코 같은 해시코드를 가질 수 없다. 하지만 예외가 있는데, 바로 hashCode() 메서드가 int형 정수를 반환한다는 점이다. 만일 자신의 컴퓨터가 32bit 사양이라면 이는 문제가 되지 않는다. 하지만 현대 시대에서 대부분 사용하는 64비트 컴퓨터에서 돌아가는 JVM(가상머신)은 기본적으로 8바이트(64bit) 주소체계를 기본으로 하는데, 만일 8바이트의 주소값을 hashCode를 이용해 반환하면 메서드의 타입에 따라 4바이..

category_image
인파_
2022.11.16
(0)
Language/Java

☕ 자바 equals / hashCode 오버라이딩 - 완벽 이해하기

equals 메소드 어떤 두 참조 변수의 값이 같은지 다른지 동등 여부를 비교해야 할때 사용하는 것이 equals() 메서드이다. 대표적으로 String 타입의 변수를 비교할때 가장 많이 거론되는 메서드일 것이다. String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); // 주소 비교 false System.out.println(s1.equals(s2)); // 값 비교 true 그러면 문자열이 아닌 클래스 자료형의 객체 데이터일 경우 equals() 메소드는 어떻게 다뤄질까? 어렵게 생각할 필요 없다. 비교할 대상이 객체일 경우 객체의 주소를 이용하여 비교한다. 즉, 객체 자체를 비교할때는 == 이나 equals() 나 똑같다고 ..

category_image
인파_
2022.11.16
(0)