기본 자료형의 형변환
Java의 기본 자료형은 형변환이 가능하다.
가령 int(4byte)는 long(8byte)으로 형변환이 가능하며, 이는 작은 크기의 타입이 큰 타입으로 변경되는 것으로 데이터의 손실이 발생하지 않는다.
이처럼 작은 타입의 데이터가 큰 타입으로 묵시적으로 형변환되는 것을 Promotion이라고 한다.
물론 모든 기본 자료형의 promotion이 가능하지는 않다. 예를 들어 boolean → int 로의 형변환은 불가하다.
int small = 10;
long big = small;
이와는 반대로 큰 타입의 데이터를 작은 타입으로 형변환할 때는 코드 상에서 형변환할 타입을 명시해주어야 하며, 이를 Casting이라고 한다. 이는 사용할 수 있는 비트의 수가 줄어드는 것이므로, 데이터의 손실이 발생할 수 있다.
int big = 128;
byte small = (byte) big;
참조 자료형의 형변환
참조 자료형도 형변환이 가능하다. 다만 몇 가지 주의할 점이 있다.
- 참조 자료형에서는 sub class type의 데이터를 super class type으로 형변환할 때, sub class에서 확장하여 가지고 있던 인스턴스 변수나 클래스 변수를 사용할 수 없으며, 추가한 메소드 또한 사용할 수 없다. 다만 super class의 메소드를 override했다면, 그 메소드는 사용할 수 있다.
- super class의 static 메소드는 sub class에서 override할 수 없다. 이는 static 메소드가 클래스 컴파일 시점에 메모리에 생성되기 때문이다. 반대로, instance 메소드는 런타임에 메모리에 생성되므로 override가 가능하다. static은 클래스 단위로 만들어지고, instance는 객체 단위로 만들어진다는 것을 유의하면 좋다.
참고
웹 사이트 | https://wedul.site/457