1. 형 변환(casting)이란?
서로 다른 타입 간의 연산을 수행할 때, 수행하기 전에 타입을 일치시켜야 한다. 이때 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 '형 변환(casting)'이라 한다.
형 변환(casting)이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
예를 들어, int 타입의 값과 float 타입의 값을 더하는 경우, 두 값을 같은 타입(float)으로 변환한 다음에 더해야 한다.
2. 형 변환 방법
형 변환은 형 변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주면 된다.
(타입) 피연산자
* 여기에 사용되는 괄호'( )'는 '형 변환 연산자'라고 한다.
double d = 85.4;
int score = (int)d; // double 타입의 변수 d를 int 타입으로 형변환
int score = (int)85.4; // 변수 d의 값을 읽어 와서 형변환한다.
int score = 85; // 형변환의 결과인 85를 변수 score에 저장한다.
기본형에서 boolean을 제외한 나머지 타입들은 서로 형 변환이 가능하다.
int a = (char)65; // 결과 'A'
char b = (int)'A'; // 결과 65
float c = (int)1.6f; // 결과 1
int d = (float)10; // 결과 10.0f
- 예제 CastingEx1.java
public class CastingEx1 {
public static void main(String[] args) {
double d = 85.4;
int score = (int)d;
System.out.println("score="+score);
System.out.println("d="+d);
}
}
3. 정수형 간의 형 변환
큰 타입에서 작은 타입으로의 변환, 예를 들어 int 타입(4byte)의 값을 byte타입(1byte)으로 변환하는 경우 아래와 같은 크기의 만큼 잘려나간다. 그래서 경우에 따라 '값 손실(loss of data)'이 발생할 수 있다.
System.out.println(300); // 결과값 300
System.out.println((byte)300); // 결과값 44
반대로 작은 타입에서 큰 타입으로의 변환, 예를 들어서 byte 타입(1byte)의 값을 int 타입(4byte)으로 변환하는 경우는 저장공간의 부족으로 잘려나가는 일이 없으므로 값 손실이 발생하지 않는다.
참고문헌 : 남궁성(2016), Java의 정석, 도우출판