형변환이란
- 어떤 변수형을 다른 형으로 변환시키는 방법
- 형변환은 주로 기본형 변수인 정수 ↔ 실수 ↔ 문자 들 사이에서 일어난다.
형변환 방법
Double, Float → Int
- (Int)캐스팅 방식으로 실수를 정수로 치환하는 방법
- 이때 실수형의 소수점아래자리는 버려짐
double doubleNumber = 10.101010;
float floatNumber = 10.1010
int intNumber;
intNumber = (int)doubleNumber; // double -> int 형변환
intNumber = (int)floatNumber; // float -> int 형변환
Int → Double, Float
- (Double,Float) 캐스팅으로 정수형을 실수형으로 변환하는 방법
int intNumber = 10;
double doubleNumber = (double)intNumber; // int -> double 형변환
float floatNumber = (float)intNumber; // int -> float 형변환
자동 형변환
작은 타입 > 큰 타입 형변환 (자동 형변환)
- 작은 크기의 타입에서 큰 크기의 타입으로 저장될때 큰 크기로 형변환이 발생
- 값의 손실이 없음
변수 타입별 크기 순서
byte(1) → short(2) → int(4) → long(8) → float(4) → double(8)
byte byteNumber = 10;
int intNumber = byteNumber; // byte -> int 형변환
System.out.println(intNumber); // 10
char charAlphabet = 'A';
intNumber = charAlphabet; // char -> int 형변환
System.out.println(intNumber); // A의 유니코드 : 65
intNumber = 100;
long longNumber = intNumber; // int -> number 형변환
System.out.println(longNumber); // 100
intNumber = 200;
double doubleNumber = intNumber; // int -> double 형변환
System.out.println(doubleNumber); // 200.0 (소수점이 추가된 실수출력)
큰 타입 > 작은 타입 형변환 (강제 형변환 = 캐스팅)
- 작은 크기의 타입이 큰 크기의 타입과 계산될때 자동으로 큰 크기의 타입으로 형변환이 발생
- 값의 손실이 생김
int intNumber = 10;
double doubleNumber = 5.5;
double result = intNumber + doubleNumber; // result 에 15.5 저장됨 (int -> double)
intNumber = 10;
int iResult = intNumber / 4; // iResult 에 2 저장됨 (int형 연산 -> 소수점 버려짐)
intNumber = 10;
double dResult = intNumber / 4.0; // dResult 에 2.5 저장됨 (double형 연산 -> 소수점 저장)