타입 변환

Moom2n·2024년 2월 27일
0

Java

목록 보기
9/26

타입 변환

참조 타입은 다른 타입으로 변환될 수 있지만, 반드시 변환되는 객체사이에 관계가 있어야 합니다.

- Wrapper 클래스

기본 데이터 타입(Primitive Data Type)을 객체로 취급해야 하는 경우에 사용
java.lang 패키지에 포함

int primitiveTypeVariable = 1;
Integer wrapperType = new Integer(primitiveTypeVariable);
Integer wrapperType2 = new Integer(2);
wrapperType.toString();
wrappertype.equals(wrapperType2);

- Boxing과 Unboxing

Wrapper 클래스는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스에 저장된 값을 변경할 수 없습니다. Value world의 값을 Reference world로 가져가서 객체처럼 사용하기 위한 목적으로 사용되어, 생성된 인스턴스의 값을 참조만 할 수 있습니다.

  • Boxing : 기본 데이터 타입을 Wrapper 클래스의 인스턴스로 변환하는 과정

  • Unboxing : Wrapper 클래스를 기본 데이터 타입으로 변환하는 과정

Integer number = new Integer(20);		// Boxing
int i = number.intValue();			// Unboxing

Auto Boxing, Auto Unboxing

Integer number = 1;
int i = number;

- 슈퍼 클래스/서브 클래스 변환

  • 슈퍼 클래스로 변환
    암시적(Implicit) / 명시적(Explicit) 모두 가능
    언제나 변환에 성공함
    Object로 변환 가능
class Animal {
    void eat() {}
}

class Bird extends Animal {
    void fly() {}
}

Animal a;
Bird b = new Bird();

a = b;
a = (Animal)b;

Animal 타입인 a 는 eat 메소드만을 가지고 있습니다. Animal 을 상속하는 Bird 타입인 b 는 eat 와 fly 두 메소드를 가집니다. b 가 a 로 변환되면, 즉 Bird 타입에서 Animal 타입으로 변환되면 b 는 Bird 의 인스턴스이지만 Animal 타입이므로 Animal 이 가진 eat 메소드만을 가지게 됩니다.

  • 서브 클래스로 변환
    명시적(Explicit)으로 변환
    바른 타입으로 변환되는지 점검
    변환되지 않을 경우 ClassCastException 발생
Bird b = (Bird)a;

- instanceof 연산자

객체의 타입을 확인하는데 사용
변환 가능하면 true를 반환

Hero hero;

if (h instanceof Hero) {		//true 반환
    hero = (Hero)ironMan;
}
else {
    System.out.println("Not a hero");
}

Hero h = new Hero();
if (h instanceof IromMan)		//false 반환

- Object 타입 변환

Object object;
IronMan ironMan = new IronMan();
object = ironMan;
object = (Object)ironMan;

ironMan instanceof Object;	// true

- 인터페이스 타입 변환

인터페이스는 인터페이스에 정의된 멤버에 액세스 하는 데만 사용됨
인터페이스에서 파생된 클래스에 정의된 메소드 및 변수는 인터페이스를 통해 액세스 할 수 없음

IFlyable canFly;
IronMan ironMan = new IronMan();
canFly = ironMan;

if (ironMan instanceof IFlyable)	// true

0개의 댓글

관련 채용 정보