Computer Science/자료구조

[Java로 배우는 자료구조] 제3-3장: 클래스 Object와 Wrapper 클래스정리

문에딕트 2022. 3. 15. 15:57

 

클래스 Object

  • 모든 클래스의 superclass
    • equals
    • toString
  • 내가 만들지 않아도 이미equals, toString 메서드 가짐.
  • 다만 내 의도대로 작동 하지 않음

toString()

  • toString 메서드를 따로 만들어주지 않은 클래스의 객체에 대해서 toString()메서드를 호출하면 다음과 같은 String이 반환
    • PhoneBook@ef02392(클래스이름@객체의hash code)

클래스 Class

  • 모든 클래스는 하나의 Class객체를 가짐
  • 이 객체는 각각의 클래스에 대해 유니크 하다
  • 매서드 getClass()는 Object클래스가 제공하는 메서드이며, 이 유일한 Class객체 반환한다.
  • 앞 페이지의 예에서 만약 this.getClass() ==obj.getClass()가 true라면 우리는 비교 대산인 두 객체(this와 obj)가 동일한 클래스의 객체임을 알 수 있음.

Wrapper Class

  • primitive type데이터와 non-primitive type데이터, 즉 객체는 근본적으로 다리게 처리된다.
  • 가령 Object타입의 배열에는 다형성의 원리에 의해 모든 종류의 객체를 저장 가능
    • 그러나, int,double 등의 primitive type데이터는 저장 불가(객체가 아니므로..)
    • 때때로 primitive type데이터를 객체로 만들어야할 경우가 있음.
      • →이럴때 Integer, Double, Character 등의 wrapper class를 이용한다
  • 기본타입(primitive type)의 데이터를 하나의 객체로 포장해주는 클래스
    • wrapping(객체로 포장) → 배열에 넣을 수 있음
    • 데이터 타입간의 변환 기능을 제공
  • Autoboxing과 Unboxing

 

package Ch3_3;

public class Test {
    public int a =10;
    public double x = 1.23;

    public boolean equals( Object other ){ // Overriding //Test other 이 아닌 이유?
       //Test 타입으로 타입 변환
        Test other2 = (Test) other; //type casting
        return a == other2.a && x == other2.x;
    }

    public static void main(String[] args){
        Test test1 = new Test();
        Test test2 = new Test();

        System.out.println( test1.toString() );
        
        if( test2.equals(test1) ){
            System.out.println("yes");
        }     
        else  {
            System.out.println("no");
        } 
            
        Object[] array = new Object[100];
        int a =20;
       // Integer age = new Integer(a); //wrapping
        
        array[0] = a;  //autoboxing

       //   int b = age.intValue();  //unwrapping
        int b = (Integer) array[0]; //unboxing

        String str ="1234";
        int c = Integer.parseInt(str); //데이터 타입간의 변화기능 제공
        System.out.println(c);

    }
    
}