Java

[Java]Object Class

MoZZANG 2022. 3. 15. 20:09
  • Java의 모든 클래스의 최상위 부모는 Object클래스이다.
  • Object클래스의 toString()메소드는 객체의 주소를 String타입으로 반환해주는 메소드이다.
  • => 패키지명.클래스명@주소(16진수) 형태로 주소를 반환한다.
  • Object클래스의 equals()메소드는 두 객체간의 주소값을 비교해서 같으면 true 다르면 false를 반환한다.
  • => 비교클래스의 인스턴스변수.equals(대상클래스의 인스턴스변수) 형태

 

 

예제를 보면서 알아보자.

▲ MyClass라는 클래스를 만들고 맴버로 data와 인자생성자 하나를 생성했다.

 

▲ Object클래스에서 주소값을 반환하던 toString()메소드와 주소값을 비교하던 equals()메소드를 오버라이딩하여 주소값이 아닌 실제 데이터값을 출력하고 비교하는 메소드로 오버라이딩 하였다.

 

 

 

이제 메인메소드에서 활용해보자

▲ MyClass타입의 인스턴스 변수 mc1과 mc2를 생성하고 각각 데이터값으로 10을 담은 메모리를 생성하였다.

   우리가 위 MyClass에서 toStirng()메소드를 오버라이딩 시켜놓았으므로 mc1,mc2 둘다 데이터값이 출력된다.

 

비교연산자 두개(==)는 기본적으로 같은 타입의 주소값만을 비교할 수 있다. mc1과 mc2는 같은 타입이므로 ==를 사용할 수 있는 것이고 각각 new생성자를 사용했기때문에 다른 메모리 주소를 가져있으므로 Different가 출력된다.

 

equals()또한 값을 비교하도록  오버라이딩되었기 때문에 mc1과 mc2의 값으므로 true가 반환된다.

 

 

 

 

 

 

 

또 다른 예제를 보자

▲ 이번에는 맴버변수가 2개이고, 인자를 2개받는 인자생성자가 있는 클래스이다.

   따라서 toString또한 변수 2개를 모두 반환하는 오버라이딩된 메소드이며, equals()는 각각의 값을 비교하여 boolean값으로 반환하는 오버라이딩 메소드를 만들었다.

 

 

 

메인메소드에서 사용해보자.

▲ Point클래스형 변수 point1과 point2를 선언과 동시에 인자생성자를 통해서 데이터값을 담은 메모리를 생성했다.

toString()과 equals()는 데이터값을 호출, 데이터값을 비교하는 메소드로 모두 오버라이딩 되었기 때문에 저장된 데이터 값을 활용하여 결과값을 출력한다.