반응형
해시 코드는 객체 멤버 변수의 메모리 번지수를 찍어냄 즉, 우리가 String 타입의 무언가를 가져올 때 toString을 재정의 하지 않으면 User@1 b3 b2 a 이런 식으로 출력이 된다 즉 골뱅이 뒤에 있는 번지수를 찍어 내는데 이것은 컴퓨터가 무언가를 저장할 때 16진수로 저장할 때 사용하는 방식이다 그러면 객체의 멤버 변수가 문자열이 같으면 해시 코드는 같나? 같다고 할 수 있다. 객체의 문자열을 찍어주는 메모리 번지수를 우리는 해시 코드라고 할 수 있기 때문이다. 이러한 해시 코드의 사용 이유는 그럼 무엇인가? 객체는 키와 값으로 저장하는데 키는 여기서 메모리 번지수라고 할 수 있고 값은 더미 데이터 즉, 버려지는 값인 거다. 우리가 멤버 변수에 직접 넣는 값들은 버려지는 값인 거다. 그러면 왜 이런 방식을 이용할까? 컴퓨터의 성능적인 면에서 저장할 게 너무 많으면 성능 처리가 늦어지게 때문 그렇다면 객체의 멤버 변수가 문자열 즉, String타입이면 해시 코드를 굳이 재정의 할 필요는 없다고 할 수 있다.
그렇다면 해시 코드는 어디서 온 것인가? Set 객체의 메서드다. Set객체는 중복을 절대 하용하지 않고 순서를 고려하지 않는데 고려하는 경우도 있다 고려하지 않는 경우를 Set메서드의 해시 코드가 담당하고 고려하는 경우를 솔티드 코드가 담당을 하고 있다.
피드백은 언제나 환영입니다.
반응형
'In my opinion' 카테고리의 다른 글
현재 개발자 취업 시장: 현실과 도전 (0) | 2024.06.14 |
---|---|
JS 객체 안의 함수 (0) | 2022.05.30 |
XHR (0) | 2022.05.26 |