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”학번을 갖고 있는 학생의 각 과목의 이름과 성적을 합산하시오.
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) 구루미 온라인 독서실

  - 학습 시간도 관리 해주는 온라인 독서실 

 

온라인 강의 주소

https://bit.ly/37BpXiC

추천합니다 . 👍

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

+ Recent posts