02. Object 클래스의 메서드 활용
정리 해 봅시다 .😘
hashCode는 인스턴스가 저장되어 있는 주소를 불러(리턴)옵니다.
- 동일한 대상의 주소값이 다르게 출력되는 상황을 볼수 있습니다 :
- hashCoce 메소드 : 10진수로 출력
- to String 메소드 : 16진수로 출력
- 예시 코드 )
(10진수 : hashCode )1131316523 는 (16진수 : to String)436e852b과 같습니다.
10진수 과 16진수 와 HASH 타입
10 진수: 0 1 2 3 4 5 6 7 8 9
16 진수: 0 1 2 3 4 5 6 7 8 9 A B C D E F
HASH : 하나의 key와 하나 이상의 value값을 ;으로 구분하여 데이터를 저장할수 있습니다.
- 예) A = A;B;C;D
- IT분야의 암호 알고리즘과 데이터 전송분야의 정보 변조 판단(CRC32등) 부분에서 활발하게 사용중 입니다.
- 자바에서는 힙 메모리에 저장되는 인스턴스의 값이 일 = 다수 형식으로 hash형식으로 저장 됩니다.
- 불러오는 상황에서는 주소값을 10진수 integer 형식으로 불러옵니다.
- equals 메소드는 각각의 인스턴스(key)의 hash(주소)값이 같은경우 ture 를 리턴 합니다.
- 인스턴스(오브젝트)내부의 맴버변수 주소는 오브젝트(this).hashCode 내부에서 다시 hashcode를 사용하여 주소를 찾으려는 맴버변수의 변수명을 key값으로 전달하여 (메소드=변수명 = key) = index(주소값)으로 불러옵니다.
<hashCode> 활용_ 재정의
- Equals 매소드를 재정의 할때 함께 재정의 하여 사용하게 되는 경우가 높은 메소드가 Equals 입니다.
- 예 ) student 의 name값을 비교할 경우 this의 name의 hash값을 리턴하도록 합니다.
- 예) “0101”학번을 갖고 있는 학생의 각 과목의 이름과 성적을 합산하시오.
- 예 ) student 의 name값을 비교할 경우 this의 name의 hash값을 리턴하도록 합니다.
package TEST1;
public class EqualsTest {
public static void main(String[] args) {
Student S1 = new Student(100, "정");
Student S2 = new Student(100, "정");
System.out.println(S1.equals(S2));
System.out.println(S1.hashCode());
System.out.println(S2.hashCode());
}
}
package TEST1;
public class Student {
private int studentNum;
private String studentName;
public Student(int studentNum , String studentName) {
this.studentName = studentName;
this.studentNum = studentNum;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return studentName + ":"+studentNum;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Student) {
Student S = (Student)obj;
if(this.studentNum == S.studentNum)
return true;
else return false;
}
return false;
}
@Override
public int hashCode() {
return studentNum;
}
}
- 그렇다면 hashCode로 특정 속성값을 불러오도록 재정의 해버린다면 . 그 속성을 갖고 있는 오브젝트의 hash값을 재정의 되기 이전 기능처럼 불러오는 방법은 무엇일까요?
주소란 무엇일까요?
- 사실 여기에서 불러오는 integer타입의 hash코드는. 물리적인 주소가 아니라 JVM에서 관리되는 가상 주소 입니다.
단어 수집
에러 메세지
학습 시간
공부 모임
1) 카카오톡 오픈 채팅방
- 모르는것을 질문하거나
- 이해가 가지 않는 부분을 다른 분들의 블로그에서 참고하기 용도
2) 구루미 온라인 독서실
- 학습 시간도 관리 해주는 온라인 독서실
온라인 강의 주소
추천합니다 . 👍