자동 형 변환
: 작은타입 > 큰 타입 형 변환시
: 더 큰 표현범위를 가진 타입으로 변환되는 것이라 값의 손실이 없음
: 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형 변환을 해줌
강제 형 변환 = 캐스팅
: 더 작은 표현범위를 가진 타입으로 변환되는 것이라 값의 손실이 생김
: 값의 손실이 생기기 때문에 자동으로 형 변환을 해주지 않고 개발자가 선택하여 형 변환을 함
// double -> int
// 실수 -> 정수(0.xxxx -> 0)
double doubleNumber = 10.101010;
// 변환(int)
int intNumber;
intNumber = (int)doubleNumber; // double -> int
System.out.println("Double Type =>" + doubleNumber);
System.out.println("Int Type =>" + intNumber);
// float -> int
float floatNumber = 10.1010f;
int intNumber;
intNumber = (int)floatNumber;
System.out.println("Float Type ->" + floatNumber);
System.out.println("Int Type ->" + intNumber);
// 정수 -> 실수, 명시적 형 변환
int intNumber = 10;
double doubleNumber = (double)intNumber;
float floatNumber = (float)intNumber;
System.out.println("intNumber -> " + intNumber);
System.out.println("doubleNumber -> " + doubleNumber);
System.out.println("floatNumber -> " + floatNumber);
🚧 여기서 잠깐!
전체주석을 할 때에는 주석할 코드를 잡은 후
Command
+/
를 누르면 된다.
Byte(1) ▶️ short(2) ▶️ int(4) ▶️ long(8) ▶️ float(4) ▶️ double(8)
public class JavaInt {
public static void main(String[] args) {
// (1) byte -> int
byte byteNumber = 10;
int intNumber = byteNumber;
System.out.println(intNumber);
}
}
// (2) char(1) -> 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);
public class JavaLast1 {
public static void main(String[] args) {
// 작은 크기의 타입이 큰 크기의 타입과 '계산'될 때
// 자동으로 큰 크기의 타입으로 형 변환이 된다.
int intNumber = 10;
double doubleNumber = 5.5;
double result = intNumber + doubleNumber;
System.out.println("Plus => " + result);
// 1) 정수로 나누기
int iResult = intNumber / 4; // 2.5로 예상했지만 소수점을 버리고 2라는 값이 나옴
// 2) 실수로 나누기
double dResult = intNumber / 4.0;
System.out.println(iResult + " / " + dResult);
}
}