본문으로 바로가기

equals(), toString()

category Java언어 2018. 8. 29. 13:52

모든 클래스의 최상위 클래스는 Object class이기 때문에 모든 클래스는 Object class의 메소드를 사용할 수 있다.

그런데 String class를 API에서 찾아보면 Object class와 같은 이름의 메소드들이 존재한다. 이건 뭘까..? 바로 상속받은 클래스의 메소드를 재정의하여 다른 기능을 하도록 오버라이딩한 메소드이다. 이번 글에서는 Object의 메소드와 String의 오버라이딩된 메소드를 비교설명 하겠다

 

Object class

 

equals(Object object) : 두 변수가 참조하는 객체 메모리 주소의 해시값 비교해서 같으면  1을 반환하고 다르면 0을 반환하는 메소드.

  (간단히 말해 두개의 참조가 같은 객체를 참조하는지 비교.)

 

toString() : 현재 변수가 참조하는 객체의 문자열 표현 반환하는 메소드.  ( 클래스명 @ hashCode() )

   객체의 문자열 표현은 객체에 따라 달라지기 때문에 반드시 오버라이딩 해줘야한다.

 

hashCode() : 현재 변수가 참조하는 객체 메모리 주소의 해시값을 반환하는 메소드.

위 정의에 의하여 두 객체가 같다면 해시코드도 같아야한다.

equals()를 오버라이딩 했다면 hashCode()도 오버라이딩 해줘야 한다.

 

 

 

String class

 

equals(Object object) : 두 객체가 가진 문자열의 해쉬값 비교해서 같으면  1을 반환하고 다르면 0을 반환한다.

     (간단히 말해 두 객체가 가진 문자열이 같은지 비교)

 

toString() : 해당 객체의 문자열을 반환하는 메소드.

  객체의 참조변수.toString();이 올바른 표현이지만 toString()을 생략해도 같은 결과를 나오도록 지원하는데, 이는 자바에서 String

   이 자주 사용되기 때문이다.