써치킴의 우당탕탕 개발 블로그

[Java][Ch3] Object Class 본문

더 자세하게 Java

[Java][Ch3] Object Class

써치킴 2022. 5. 13. 02:16

Object Class

자바 API의 모든 클래스와 사용자가 정의한 모든 클래스의 최상위 클래스

  • 자바의 모든 클래스들은 Object 클래스를 상속받아야 함
  • Object 클래스의 모든 메서드를 사용 가능
  • 보통은 override해서 사용

equals()

  • Object의 클래스 메서드
  • Object의 클래스의 equals()는 객체의 주소값을 비교한다.
  • 주로 자식클래스에서 오버라이드해서 사용
    • ex) String 클래스의 equals()는 "문자열" 비교
    • ※ public boolean equals(Object obj){.......}
    • obj가 Object형이므로 반드시 같은 자료형인지 비교 필요 -> instanceof 연산자 사용

hashConde() 

객체의 식별 정수값

  • 주소값을 이용해서 정수형 숫자를 만들어서 리턴 -> 객체마다 고유한 값을 가짐
  • ※ 주의
    • 논리적 동급 객체 비교시 오버라이드 해야한다

toString()

객체의 문자정보를 리턴(객체를 문자열로 표현한 값)

  • Object 클래스의 toString() => path.클래스명@객체주소값(16진수 해쉬코드)
  • String 클래스의 toString() => 객체가 저장하고 있는 문자열 리턴
AA.java
public class AA /*extends Object가 생략되어있음*/{
     private String name;
     private int kor;
     private int eng;
     
     public AA() {
           this(null, 0, 0);
     }
     public AA(String name, int kor, int eng) {
           this.name = name;
           this.kor = kor;
           this.eng = eng;
     }
     @Override
     public String toString() {
           return "AA [name=" + name + ", kor=" + kor + ", eng=" + eng + "]";
     }
}
MainEx.java
public class MainEx {
     public static void main(String[] args) {
           
           AA aa1 = new AA("SEA", 10, 20);
           Object aa2 = new AA("sky", 60, 70);
           // aa1의 주소값을 aa3번에 대입하라
           // 같은 객체를 참조한다 -> 주소값과 해시코드값이 같다.
           AA aa3 = aa1;
           
           // AA클래스에서 toString()함수를 오버라이드하지 않을 경우 Object를 상속받은 AA 클래스의 toString()함수(주소값)가 호출된다.
           // AA클래스에서 toString()함수를 오버라이드할 경우 입력한 return값으로 출력된다.
           System.out.println("aa1 : " + aa1);
           System.out.println("aa2 : " + aa2);
           System.out.println("aa3 : " + aa3);
           
           System.out.println();
           //aa1과 aa2의 주소값이 같은지를 비교
           System.out.println("aa2.equals(aa1) : " + aa2.equals(aa1));    // 각 객체의 주소가 다르므로 false
           
           System.out.println("aa1.getClass() : " + aa1.getClass());
           System.out.println("aa2.getClass() : " + aa2.getClass());
           
           System.out.println("aa1.hashCode() : " + aa1.hashCode());
           System.out.println("aa2.hashCode() : " + aa2.hashCode());
           System.out.println("aa3.hashCode() : " + aa3.hashCode());
           
           System.out.println(aa1.toString());
           System.out.println(aa2.toString());
           System.out.println(aa3.toString());
     }
}

'더 자세하게 Java' 카테고리의 다른 글

[Java][Ch3] Math 클래스  (0) 2022.05.13
[Java][Ch3] 래핑 클래스  (0) 2022.05.13
[Java][Ch2] 내부클래스  (0) 2022.05.13
[Java][Ch2] 인터페이스  (0) 2022.05.13
[Java][Ch2] 추상화(abstract)  (0) 2022.05.13
Comments