Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- java
- 이진탐색
- Mac
- ec2
- session manager
- Timezon설정
- Jenkins
- terraform variable
- lsof
- Docker
- Python
- terraform main commands
- SELinux비활성화
- terraform
- terraform 기본개념
- PrivateSubnet
- JWT
- 프로그래머스
- 인텔리제이
- terraform 설치
- heapq
- endpoint
- haproxy
- s3
- linuxr계정설정
- algorithm
- Jenkinspipeline
- Process monitoring
- binarysearch
- terraform backend
Archives
- Today
- Total
MONG 기술블로그
Java 자동 형변환과 강제 형변환 본문
자동 타입 변환 ( promotion )
자동으로 타입 변환이 일어나는 것을 의미하며, 값의 허용 범위가 작은 타입이 큰 타입으로 대입될 때 발생한다.
기본 타입을 허용 범위 순으로 적어보면 아래와 같다.
byte < short
char < int < long < float < double
int intValue = 10;
// 자동 형변환 OK.
// int보다 long이 허용범위가 더 큼.
long longValue = intValue;
// Error...
// long은 int보다 허용 범위가 작기에 자동 형변환 불가
intValue = longValue;
강제 타입 변환 ( Casting )
위 예제에서 큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환이 불가함을 확인했다.
이때 큰 허용 범위 타입을 작은 허용 범위의 타입으로 저장하는것을 강제 타입 변환이라고 하며 (타입) 를 사용한다.
단 강제 타입 변환은 허용 범위가 큰 타입을 허용 범위가. 작은 타입으로 구겨넣는? 방식으로 변환하기에 값 유실에 대해 조심해야한다.
해당 예제를 코드로 확인해보자.
byte byteValue = Byte.MAX_VALUE;
System.out.println("byte타입의 MAX_VALUE는 " + byteValue + " 입니다.");
int intValue = 200;
System.out.println("int에 대입된 값은 " + intValue + " 입니다.");
byteValue = (byte) intValue;
System.out.println("int에 할당된 200을 byte로 강제변환하여 할당하면 " + byteValue + " 값으로 할당됩니다.");
/**
* 출력결과
* byte타입의 MAX_VALUE는 127 입니다.
* int에 대입된 값은 200 입니다.
* int에 할당된 200을 byte로 강제변환하여 할당하면 -56 값으로 할당됩니다.
* */
위와같이 강제로 캐스팅 시에는 올바르지 않은 값이 할당될 수 있으므로 유의하여 사용이 필요하다.
Comments