JAVA/포스팅

자바 형변환

짜집퍼박사(짜박) 2023. 10. 29. 23:49

자바에서 형변환(type casting)은 한 타입의 변수를 다른 타입의 변수로 변환하는 과정을 의미합니다. 자바의 형변환은 암시적 형변환과 명시적 형변환으로 크게 두 가지 카테고리로 나눌 수 있습니다.

 

1. 암시적 형변환 (Implicit Type Casting)

암시적 형변환은 컴파일러가 자동으로 수행하는 변환입니다. 이 변환은 데이터 손실이 발생하지 않는 방향으로, 보통 더 작은 데이터 타입에서 더 큰 데이터 타입으로 이루어집니다.

int i = 100;
long l = i;  // int에서 long으로 암시적 형변환

double d = i;  // int에서 double로 암시적 형변환

 

2. 명시적 형변환 (Explicit Type Casting)

명시적 형변환은 프로그래머가 직접 지정하여 수행하는 변환입니다. 데이터 손실이 발생할 가능성이 있는 상황에서 필요하며, 대게 더 큰 데이터 타입에서 더 작은 데이터 타입으로의 변환에 사용됩니다.

double d = 100.04;
int i = (int) d;  // double에서 int로 명시적 형변환. 소수점 아래 값이 손실됨.

long l = 100L;
i = (int) l;  // long에서 int로 명시적 형변환.

 

형변환 주의점

 

1. 데이터 손실 : 명시적 형변환을 사용할 때 데이터 손실이 발생할 수 있습니다. 예를 들어, double에서 int로 변환할 때 소수점 아래의 값이 제거됩니다.
2. 범위 초과 : 변환 과정에서 타겟 타입의 허용 범위를 초과하는 값이 발생할 수 있습니다. 이 경우, 예상치 못한 결과가 발생할 수 있으므로 주의가 필요합니다.
3. 자동 박싱과 언박싱 : 기본 타입과 해당 래퍼 타입(예: int와 Integer) 사이의 변환은 Java 5 이후 자동으로 처리됩니다.

Integer integerObj = 100;  // int에서 Integer로 자동 박싱
int intVal = integerObj;   // Integer에서 int로 자동 언박싱

 

클래스 형변환

 

객체 지향 프로그래밍에서 상속 관계에 있는 클래스 간의 형변환이 가능합니다. 하위 클래스의 객체는 항상 상위 클래스의 타입으로 암시적으로 형변환될 수 있습니다. 그러나 반대로 상위 클래스의 객체를 하위 클래스 타입으로 변환하기 위해서는 명시적 형변환을 사용해야 하며, 이때 실제 객체의 타입을 확인하는 것이 안전합니다.

Object obj = new String("Hello");
if (obj instanceof String) {
    String str = (String) obj;  // 명시적 형변환
}

 

형변환은 자바 프로그래밍에서 중요한 개념입니다. 특히 다양한 타입의 데이터를 처리하거나 클래스와 인터페이스의 상속과 다형성을 활용할 때 이해하고 있어야 합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 정수형과 실수형간의 형변환  (0) 2023.10.31
자바 데이터 타입별 형변환  (0) 2023.10.29
자바 음수의 2진 표현  (0) 2023.10.16
자바 실수의 진법 변환  (0) 2023.10.16
자바 정수의 진법 변환  (0) 2023.10.16