02. Object 클래스의 메서드 활용


정리 해 봅시다 .😘

Object Class에는 어떤 메서드 들이 들어 있는지 궁금하시죠?

  • 모든~! 클레스는 Object 클레스를 상속하고 있기 때문에(Object가 모든 클레스의 부모 입니다) Object클레스의 메소드는 공짜(아무런 조치를 취하지 않아도) 사용할수 있는 편리한 메소드들 이라는점에서 관심이 생기지 않으시나요? ^^

[ equals() ]

두개의 인스턴스의 주소값이 같을때 true값(boolean형)을 리턴 해요.

  • 여기에서 주소값이란 아래에서 hashCode로 얻어진 값을 가르켜요.(정확히는 주소값이 아니에요. 아래에서 자세히 설명)
  • 하지만 equal의 제정의를 통해서 주소가 다르더라도 내부의 값이 같은(논리적으로 동일 하다고 표현) 경우에도 true가 리턴되도록 변화 시켜놓고 사용하는 경우가 많아요.(아래 보너스 편에서 자세히 설명)
    • 재정의 방향 : 참조변수의 주소가 아니라 참조변수가 갖고 있는 맴버 변수간의 비교를 하게 만들면 됩니다.ㅎㅎ

[ hashCode() ]

  • system.out.println()으로 참조변수(배열,인스턴스,오브젝트)를 넣어서 출력하면 나오는 @뒤의 정체불명의 문자들이 이 메소드를 통해서 불려오는 JVM에서 관리하는 hash방식의 데이터 주소(위치) 이에요.
  • JVM에서는 주소값을 Key값(참조변수 명) = index값(hash타입)으로 저장하고 있어요.
    • 아참 . 물리적(메모리)인 실제 위치를 가리키는것은 아닙니다. 물리적인 위치는 컴파일 되서 돌아가면 알수 있는데 알수 있는 방법이 따로 있습니다.

보너스편

equals를 재정의하여 참조변수의 해쉬주소 다르더라도 내부의 값이 같은경우 true가 출력되도록 바꿔 볼까요 .^^

보너스로 만약 타입을 상속받는 ( 상속받은 클레스로 만들어진 인스턴스) 클레스 일 경우에도 내부의 속성은 같은 의미를 갖고 있기 때문에. 인스턴스의 기반이 상속관계(혈연관계?ㅎㅎ)일 경우에도 내부의 속성값을 비교할수 있도록 더 좋은 코드를 만들어 봅시다.

package test_a;

public class Test {

	String A;

	Test(String a){
		this.A=a; 
	}
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Test) {
			Test T = (Test)obj;
			if(this.A==T.A) 
				return true;
			else return false;
		}
		return false;
	}
	
}
package test_a;

public class TestTEst {
	public static void main(String[] args) {
		Test A = new Test("A");
		Test B = new Test("A");
		System.out.println(A.equals(B));
		
	}
}

 


단어 수집


 

에러 메세지


공부 모임

1) 카카오톡 오픈 채팅방

  - 모르는것을 질문하거나

  - 이해가 가지 않는 부분을 다른 분들의 블로그에서 참고하기 용도

2) 구루미 온라인 독서실

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

 

온라인 강의 주소

https://bit.ly/37BpXiC

추천합니다 . 👍  

 

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

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

fastcampus.co.kr

 

 

+ Recent posts