티스토리 뷰
형변환 Type Casting
- 데이터 타입이 서로 다른 데이터를 연산하기 위해 형변환 발생
byte a = 10;
int b = a;
System.out.println(b); // 10
- 표현 범위가 좁은 데이터 타입에서 넓은 데이터 타입으로 변환
byte => | short | ||||
=> int | => long | => float | => double | ||
char |
실수형이 정수형보다 넓은 데이터
1. 자동(묵시적, 암시적)형변환
- 작은 데이터 타입 => 큰 데이터 타입
형변환 할 시, 자연스럽게 변환 가능하므로 자동형변환 발생!
음수 저장 가능한 byte, int 등의 타입은 char 타입으로 자동변환 불가!
int a = 3;
float b = 1.0F;
double c = a + b; // a와 b 더하기 위해서 형변환 일어나야함
// 1. a + b 연산을 하기 위해서 int형인 a -> float로 자동형변환
// 2. a + b 연산 결과는 float, double형인 c에 저장할 때 자동형변환 발생!
// 총 2번 자동형변환이 일어남!
System.out.println(c); // 4.0
2. 강제(명시적)형변환
- 자동형변환이 적용되지 않는 경우! 수동으로(강제로) 형변환
float a = 100.0;
int b = 100.0F;
float a = (float)100.0;
int b = (int)100.0F;
강제 형변환은 큰 -> 좁은 데이터 타입으로 변환되는 것으로
데이터 오버플로우 data overflow가 발생할 수 있기 때문에 강제로 형변환할 것을 명시해야한다.
// 오버플로우 발생 예
short s = 129; // 127, 128, 129, 130
byte b = (byte)s;
System.out.println(b); // 127, -128, -127, -126
오류
byte b = 127;
char c = (char)b; // 0~65000 음수없음
System.out.println(c);
short s = 10000;
c = (char)s; // 음수 때문에 안 넣어짐
System.out.println(c);
그나마 조금 이해되던 파트... 그래도 손에 식이 안 익는다.
이 뒤부터는 더 암담함.
'배운 것 기록 > java' 카테고리의 다른 글
[eclipse] 조건문 (0) | 2022.04.27 |
---|---|
[eclipse] 연산자 (0) | 2022.04.26 |
422 String, printf(), println() (0) | 2022.04.24 |
422 변수 (0) | 2022.04.24 |
422 상수, 기본 데이터 타입 (0) | 2022.04.23 |
댓글