명시적 형변환
ex)
public class JavaStudy3 {
public static void main(String[] args) {
// 형 변환 예제 : 변수의 타입을 바꾸는 방법
// 문자열 -> 숫자
// 정수 -> 실수
// 실수 -> 정수
// double형 or float형 -> int
// 실수 -> 정수(0.xxxx -> 0)
double doubleNumber = 10.101010;
float floatNumber = 10.1010f;
//변환(int)
int intNumber;
intNumber = (int)doubleNumber; // double -> int
System.out.println("Double Type => " + doubleNumber);
System.out.println("Int Type => " + intNumber);
System.out.println("");
int Number = (int)floatNumber; // float -> int
System.out.println("Float Type => " + floatNumber);
System.out.println("Int Type => " + intNumber);
//정수 -> 실수
int intNumber1 = 10;
double doubleNumber1 = (double)intNumber1;
float floatNumber1 = (float)intNumber1;
System.out.println("");
System.out.println("intNumber1 => " + intNumber1);
System.out.println("doubleNumber1 => " + doubleNumber1);
System.out.println("floatNumber1 => " + floatNumber1);
}
}
자동형변환
ex)
public class JavaStudy4 {
public static void main(String[] args) {
// 변수 타입별 크기 순서
//byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)
// (1) byte -> int
byte byteNumber = 10;
int intNumber = byteNumber;
System.out.println(intNumber);
// (2) char(1 byte) -> int(4) 형변환
char charAlphabet = 'A';
intNumber = charAlphabet; //char -> int 자동 형변환
System.out.println(intNumber);
// (3) int -> long number 형변환
intNumber = 100;
long longNumber = intNumber;
System.out.println(longNumber);
// (4) int -> double 형 변환
intNumber = 200;
double doubleNumber = intNumber;
System.out.println(doubleNumber);
//작은 크기의 타입이 큰 크기의 타입과 '계산'될 때,
//자동으로 큰 크기의 타입으로 형 변환이 됩니다.
int intNumber1 = 10;
double doubleNumber1 = 5.5;
double result = intNumber1 + doubleNumber1;
System.out.println("Plus => "+ result);
// 1) 정수로 나누기
int iResult = intNumber1/ 4;
// 2) 실수로 나누기
double dResult = intNumber1 / 4.0;
System.out.println(iResult + " / " + dResult);
}
}
자동 형변환 vs 강제 형변환
- 작은 타입 > 큰 타입 형변환시 (자동 형변환)
- 더 큰 표현범위를 가진 타입으로 변환되는것이라 값의 손실이 없다.
- 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형변환을 해준다.
- 큰 타입 > 작은 타입 형변환시 (강제 형변환 = 캐스팅)
- 더 작은 표현범위를 가진 타입으로 변환된는것이라 값의 손실이 생긴다.
- 값의 손실이 생기기 때문에 자동으로 형변환을 해주지 않고 개발자가 선택하여 형변환을 한다.