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);
}
}