Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래밍
- 특약
- 납입
- 급성심근경색증
- 프론트엔드
- 웹개발
- 가입
- 문자열
- jQuery
- 인출수수료
- 심장질환
- javascript
- 교보생명
- 사망
- 뇌출혈
- 중도인출
- 수수료
- 자바스크립트
- python
- Java
- 코딩
- 리스트
- 교보
- PythonProgramming
- Vue.js
- 추가납입
- 보험
- 파이썬
- 보험료
- 변환
Archives
- Today
- Total
SeouliteLab
[Java/자바] System.identityHashCode()와 hashCode()의 차이점 이해하기 본문
소개:
Java에서는 객체의 해시 코드를 얻기 위해 System 클래스의 identityHashCode() 메서드와 Object 클래스의 hashCode() 메서드를 제공합니다. 이 둘은 객체의 해시 코드를 얻는데 사용되지만 동작 방식과 목적이 다릅니다. 이 글에서는 두 메서드의 차이점에 대해 자세히 알아보겠습니다.
설정:
추가 설정은 필요하지 않습니다.
System.identityHashCode()와 hashCode()의 차이점:
- System.identityHashCode(): 이 메서드는 객체의 실제 메모리 주소를 기반으로 하는 해시 코드를 반환합니다. 객체의 동일성을 판단하기 위해 사용됩니다.
- hashCode(): 이 메서드는 객체의 해시 코드를 반환합니다. 이 해시 코드는 객체의 내용(값)을 기반으로 합니다. 객체의 동등성을 판단하기 위해 사용됩니다.
예제 1: System.identityHashCode() 사용
public class IdentityHashCodeExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
// 객체의 실제 메모리 주소를 기반으로 하는 해시 코드
int hashCode1 = System.identityHashCode(str1);
int hashCode2 = System.identityHashCode(str2);
System.out.println("str1의 식별 해시 코드: " + hashCode1); // 출력 결과: str1의 식별 해시 코드: [주소 기반의 해시 코드]
System.out.println("str2의 식별 해시 코드: " + hashCode2); // 출력 결과: str2의 식별 해시 코드: [주소 기반의 해시 코드]
}
}
예제 2: hashCode() 사용
public class HashCodeExample {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = new String("Hello");
// 객체의 내용을 기반으로 하는 해시 코드
int hashCode1 = str1.hashCode();
int hashCode2 = str2.hashCode();
System.out.println("str1의 해시 코드: " + hashCode1); // 출력 결과: str1의 해시 코드: [내용 기반의 해시 코드]
System.out.println("str2의 해시 코드: " + hashCode2); // 출력 결과: str2의 해시 코드: [내용 기반의 해시 코드]
}
}
설명:
첫 번째 예제에서는 System.identityHashCode()를 사용하여 두 개의 문자열 객체의 식별 해시 코드를 출력합니다. 두 번째 예제에서는 hashCode()를 사용하여 두 개의 문자열 객체의 해시 코드를 출력합니다. System.identityHashCode()는 객체의 실제 메모리 주소를 기반으로 하기 때문에 두 개의 문자열이 서로 다른 메모리 공간에 위치하더라도 다른 해시 코드를 반환합니다. 하지만 hashCode()는 객체의 내용을 기반으로 하기 때문에 두 개의 문자열이 같은 내용을 가지고 있으면 동일한 해시 코드를 반환합니다.