자바 언어 기초 - 변수와 타입
자동 타입 변환
한모로그
2023. 1. 14. 11:00
자동 타입 변환
- 데이터 타입을 다른 타입으로 변환하는 것
- 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생
출처, 이것이 자바다
출처, 이것이 자바다
- 정수 타입이 실수 타입으로 대입되면 무조건 자동 타입 변환이 됨
- 예외: char 타입보다 허용 범위가 작은 byte 타입은 char 타입으로 자동 변환될 수 없음
package ch02.sec07;
/*
* 자동형변환(promotion) 예제
* 타입이 일치.
= 값이 할당(대입,저장)이 될때에는 타입이 일치가 되고나서 값이 저장된다.(중요)
*/
public class PromotionExample {
public static void main(String[] args) {
// int형 밑의 byte, short형은 예외를 둠. FloatDoubleExample.java 참고.
byte byteValue = 10;
// 4바이트 기억장소 = 1바이트 값
// byteValue 변수의 값이 int형으로 변환되어, 타입이 일치된 후에 할당된다.(자동형변환)
int intValue = byteValue;
System.out.println("intValue: " + intValue); -> intValue: 10
char charValue = '가';
intValue = charValue; //char 2byte -> int 4byte로 변환되고, 값이 할당.
System.out.println("가의 유니코드: " + intValue); -> 가의 유니코드: 44032
intValue = 50;
long longValue = intValue; // int 4바이트가 long 8바이트로 변환되어, 값이 할당.
System.out.println("longValue: " + longValue); -> longValue: 50
longValue = 100;
//실수데이터 타입 > 정수데이터 타입
//실수데이터 타입 4byte = 정수데이터 타입 8byte;
//8byte long타입의 값이 4byte float형으로 변환되어 값이 저장된다.
float floatValue = longValue; //100(8byte) -> 100.0(float)
System.out.println("FloatValue: " + floatValue); -> FloatValue: 100.0
floatValue = 100.5f; //(float)100.5;
double doubleValue = floatValue; //(double)floatValue;
System.out.println("doubleValue: " + doubleValue); -> doubleValue: 100.5
}
}