JAVA의 타입변환(유형변환)
Java에서 타입변환 또는 유형 변환이라고도 하는 유형 변환은 한 데이터 유형에서 다른 데이터 유형으로 값을 변환하는 프로세스를 나타냅니다. Java는 강력한 유형의 언어이므로 모든 변수와 표현식에 특정 데이터 유형이 지정되어야 합니다. 다른 데이터 유형과 관련된 작업 또는 할당을 수행하려는 경우 유형 변환이 필요합니다. Java에는 암시적(자동) 유형 변환과 명시적(수동) 유형 변환의 두 가지 주요 유형 변환 유형이 있습니다.
암시적 유형 변환(확장 변환)
확장 변환이라고도 하는 암시적 형식 변환은 정보 손실 없이 더 작은 데이터 형식의 값이 더 큰 데이터 형식의 값으로 자동 변환될 때 발생합니다. 이는 할당 또는 작업 중 데이터 손실을 방지하기 위해 Java 컴파일러에서 수행됩니다.
int smallNum = 10;
long bigNum = smallNum;
이 예에서 int 값은 명시적 캐스팅 없이 암시적으로 long 값으로 변환됩니다. 이 과정에서 데이터가 손실되지 않기 때문에 안전합니다.
명시적 유형 변환(축소 변환)
축소 변환이라고도 하는 명시적 형식 변환은 값을 더 큰 데이터 형식에서 더 작은 데이터 형식으로 수동으로 변환하거나 한 데이터 형식에서 다른 데이터 형식으로 변환하여 데이터 손실이 발생할 수 있는 경우에 발생합니다. 이것은 캐스팅 연산자를 사용하여 수행됩니다.
명시적 형식 캐스팅에는 두 가지 유형이 있습니다.
Widening Primitive Conversion
더 작은 범위에서 더 큰 범위로 값을 변환해야 하므로 안전한 것으로 간주됩니다. 정보가 손실되지 않습니다.
long bigValue = 100;
int smallValue = (int) largeValue;
기본 변환 좁히기
더 큰 범위에서 더 작은 범위로 값을 변환해야 하므로 잠재적으로 데이터 손실이나 예기치 않은 결과가 발생할 수 있습니다.
int intValue = 100;
byte byteValue = (byte) intValue;
명시적 유형 변환을 수행할 때 잠재적인 데이터 손실 또는 정밀도에 대해 주의해야 한다는 점에 유의해야 합니다.
객체를 사용한 유형 변환
유형 변환은 객체 지향 개념에도 적용됩니다. 예를 들어 캐스팅을 사용하여 상속 또는 인터페이스와 관련된 클래스 간에 유형 변환을 수행할 수 있습니다.
class Animal { }
class Dog extends Animal { }
Animal animal = new Dog(); // Implicit conversion (upcasting)
Dog dog = (Dog) animal; // Explicit conversion (downcasting)
다운캐스팅(참조를 보다 구체적인 하위 클래스로 변환)할 때 주의를 기울여야 하며 실제 객체가 예상 유형인지 확인해야 합니다. 그렇지 않으면 런타임에 ClassCastException이 발생할 수 있습니다.
결론적으로 Java의 유형 변환은 다양한 데이터 유형을 처리하고 데이터 손실 없이 작업이 올바르게 수행되도록 하는 데 필수적인 개념입니다. 암시적 유형 변환은 확장 변환을 자동으로 처리하는 반면 명시적 유형 변환은 캐스팅을 통해 수행되므로 축소 변환을 주의해서 수행할 수 있습니다. 항상 잠재적인 데이터 손실을 염두에 두고 런타임 오류를 방지하기 위해 적절한 캐스팅 방법을 따르십시오.