형변환 연산자
형변환 = 변수 또는 상수의 타입을 다른 타입으로 변환
# (타입)피연산자 double d = 85.4; int score = (int)d; int score = (int)85.4; int score = 85; // d의 값은 85.4 그대로(d를 먼저 읽고 형변환)
예시
| 변환 | 수식 | 결과 |
| --- | --- | --- |
| int → char | (char)65 | ‘A’ |
| char → int | (int)’A’ | 65 |
| float → int | | |
| int → float | | |
- 유니코드 문자표(기본: 6만자 현재 100만자)에 의해 변경됨
- A → 65
- 숫자 및 영문자는 연속적으로 존재
- 예시2: 정수 - 실수
| 변환 | 수식 | 결과 |
| --- | --- | --- |
| int → char | (char)65 | ‘A’ |
| char → int | (int)’A’ | 65 |
| float → int | (int)1.6f | 1 |
| int → float | (float)10 | 10.0f |
- 저장할 수 없는 부분은 버리게 됨 (1.6f → 1)
자동 형변환
float f = 1234; // int타입 값을 float타입에 저장
float f = (float)1234; // 원래는 형변환이 필요하지만 컴파일러가 자동으로 형변환
int i = 3.14f; // 에러 (값 손실이 일어나기 때문)
int i = (int)3.14f // 3으로 값손실 방생
byte(1byte) → int(4byte)
- byte b = 10;
- int i = b;
- 생략 가능
int → byte
- int i2 = 300;
- byte b2 = (byte)i2;
- 생략 불가
대소관계
- byte(1) → short, char(2) → int(4) → long(8) → float(4) → double(8)
예시
byte b = 100; // (O) byte 타입 범위 내(-128~127) 대입 // 위의 사례는 byte 범위 내이기 때문에 값손실이 없어 자동 형변환 // 리터럴(상수)이기 때문에 100이라는 것을 명확히 알 수 있음 byte b = (byte)100; // (O). byte 타입으로 형변환하여 대입 int i = 100; byte b = i; // (X) int타입을 byte타입에 대입 // i는 변수이기 때문에 값의 범위를 확신할 수 없음 byte b = (byte)i; // (O) byte 타입으로 형변환하여 대입 byte b = 1000; // (X) byte 값 범위 벗어남 byte b = (byte)1000; // (O) 하지만 값손실 발생으로 b에 -24 저장
사칙 연산자
+
-
*
/
같은 타입끼리만 계산 가능
(int) 10 / (int) 4 = (int) 2 // 2.5 중 소수점 이하 버림 (int) 10 / (float) 4.0f = (float) 2.5f // 값 손실이 없는 쪽으로 타입이 변환됨
'Programming' 카테고리의 다른 글
[Python]pyinstaller FileNotFoundError: [Errno 2] No such file or directory 에러 해결 (1) | 2023.09.12 |
---|---|
[Java]연산자(3) (1) | 2023.05.26 |
[Java]연산자(1) (0) | 2023.05.25 |
[Java]변수(2) (0) | 2023.05.23 |
[Java]변수 (0) | 2023.05.22 |