HwangHub
자바의 형 변환 짚고 넘어가기 본문
자바에서 다양한 타입 간 연산을 가능하게 하는 중요한 기능 중 하나가 '형 변환'입니다. 형 변환은 데이터의 타입을 다른 타입으로 변환하는 것을 의미합니다. 이번 글에서는 자바의 형 변환에 대해 좀 더 자세히 알아보도록 하겠습니다.
기본형과 참조형의 형 변환
기본적으로 형 변환은 기본형은 기본형끼리, 참조형은 참조형끼리 가능합니다. 예를 들어, int
타입을 double
타입으로, Integer
타입을 Long
타입으로 변환할 수 있습니다.
그러나 기본형과 참조형 간의 형 변환을 구현해야 하는 경우도 있습니다. 이때는 자바에서 지원하는 Wrapper class를 활용할 수 있습니다. 예를 들어, int
타입을 Integer
타입으로 변환하거나, Integer
타입을 int
타입으로 변환하는 것이 가능합니다. 이는 JDK 1.5 이후부터 자바 컴파일러에 의해 자동으로 boxing, unboxing이 되도록 지원되고 있어 편하게 사용할 수 있습니다.
int i = 10;
Integer integer = i; // auto-boxing
Integer integer = new Integer(10);
int i = integer; // auto-unboxing
묵시적 형 변환과 명시적 형 변환
자바에서 형 변환은 묵시적 형 변환과 명시적 형 변환 두 가지 방법으로 이루어집니다.
묵시적 형 변환은 컴파일러가 자동으로 수행하는 형 변환으로, 작은 표현 범위의 타입을 큰 표현 범위의 타입으로 변환할 때 발생합니다. 예를 들어, byte
-> int
, int
-> long
, int
-> float
, float
-> double
등의 변환은 모두 묵시적 형 변환에 해당합니다.
int i = 10;
long l = i; // 묵시적 형 변환
반면에 명시적 형 변환은 프로그래머가 직접 형 변환을 지시하는 것으로, 큰 표현 범위의 타입을 작은 표현 범위의 타입으로 변환할 때 필요합니다. 예를 들어, int
-> byte
, long
-> int
, float
-> int
, double
-> float
등의 변환은 모두 명시적 형 변환에 해당합니다.
int i = 1000;
byte b = (byte) i; // 명시적 형 변환
명시적 형 변환을 할 때는 주의가 필요합니다. 큰 표현 범위의 타입을 작은 표현 범위의 타입으로 변환하면 데이터 손실이 발생할 수 있기 때문입니다. 따라서 이러한 변환은 필요한 경우에만 사용하고, 가능한 이러한 상황은 피하는 게 좋습니다.
사칙연산에서의 형 변환
사칙연산을 수행할 때도 형 변환이 자동으로 일어납니다. 만약 long
+ int
와 같이 다른 타입 간의 연산이 이루어지면, 표현 범위가 더 넓은 타입으로 결과가 반환됩니다.
int i = 10;
long l = 20;
long result = i + l; // int + long -> long
알지만, 그래도 다시한번
형 변환은 자바에서 다양한 타입 간 연산을 가능하게 하는 중요한 기능입니다. 이를 효과적으로 활용하려면 묵시적 형 변환과 명시적 형 변환에 대하여 분명히 이해하고, 만약 명시적 형 변환을 불가피하게 사용해야 할 경우에는 데이터 손실 가능성을 유념하여 사용해야 합니다.
'workspace > 아티클' 카테고리의 다른 글
char[]를 출력하면 문자열이 그냥 출력된다? (0) | 2024.01.15 |
---|---|
자바 배열이 참조형인 이유 (0) | 2024.01.15 |
조건문 짚고 넘어가기 (0) | 2024.01.15 |
비트 비교연산자 짚고 넘어가기 (1) | 2024.01.15 |
자바 변수 톺아보기 (1) | 2024.01.15 |