Java | 형변환

송은석·2022년 11월 13일
0

기본 자료형의 형변환

Java의 기본 자료형은 형변환이 가능하다.

가령 int(4byte)는 long(8byte)으로 형변환이 가능하며, 이는 작은 크기의 타입이 큰 타입으로 변경되는 것으로 데이터의 손실이 발생하지 않는다.
이처럼 작은 타입의 데이터가 큰 타입으로 묵시적으로 형변환되는 것을 Promotion이라고 한다.
물론 모든 기본 자료형의 promotion이 가능하지는 않다. 예를 들어 boolean → int 로의 형변환은 불가하다.

int small = 10;

long big = small; // 묵시적 형변환, Promotion

이와는 반대로 큰 타입의 데이터를 작은 타입으로 형변환할 때는 코드 상에서 형변환할 타입을 명시해주어야 하며, 이를 Casting이라고 한다. 이는 사용할 수 있는 비트의 수가 줄어드는 것이므로, 데이터의 손실이 발생할 수 있다.
int big = 128;
byte small = (byte) big; // 자동 형변환, casting
// 데이터의 손실이 발생할 수 있으므로 주의해야 함.

참조 자료형의 형변환

참조 자료형도 형변환이 가능하다. 다만 몇 가지 주의할 점이 있다.

  1. 참조 자료형에서는 sub class type의 데이터를 super class type으로 형변환할 때, sub class에서 확장하여 가지고 있던 인스턴스 변수나 클래스 변수를 사용할 수 없으며, 추가한 메소드 또한 사용할 수 없다. 다만 super class의 메소드를 override했다면, 그 메소드는 사용할 수 있다.
  2. super class의 static 메소드는 sub class에서 override할 수 없다. 이는 static 메소드가 클래스 컴파일 시점에 메모리에 생성되기 때문이다. 반대로, instance 메소드는 런타임에 메모리에 생성되므로 override가 가능하다. static은 클래스 단위로 만들어지고, instance는 객체 단위로 만들어진다는 것을 유의하면 좋다.

참고

웹 사이트 | https://wedul.site/457
profile
Done is better than perfect🔥

0개의 댓글