Ch3-7~8. 형변환
0. 목차
Chapter3. 연산자
Ch3 - 7. 형변환 연산자
Ch3 - 8. 자동 형변환
Ch3 - 7. 형변환 연산자
▶ 형변환이란?
▷ 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
(타입)피연산자
▷ double → int
double d = 85.4;
int score = (int)d;
System.out.println(score);
System.out.println(d);
// console
85 // score, 형변환
85.4 // d, 형변환이 된 건 score안에 들어간 d값이지 변수 d 그 자체가 아님
▷ 유니코드 문자표
애초에 컴퓨터는 0과 1 밖에 모름
사람이 문자로 써도 컴퓨터는 0과 1로 바꿔서 알아들음
그래서 애초에 약속 같은 코드 문자표가 존재
▷ int → char
int i = 65;
char ch = (char)i;
System.out.println(ch);
// console
A
▷ char → int
char ch = 'A';
int i = (int)ch;
System.out.println(i);
// console
65
▷ float → int
float f = 1.6f;
int i = (int)f;
System.out.println(i);
// console
1 // 형변환 시 반올림 안함, 소수점은 그냥 버림
▷ int → float
int i = 10;
float f = (float)i;
System.out.println(f);
// console
10.0
Ch3 - 8. 자동 형변환
▶ 자동 형변환이란?
▷ 컴파일러가 자동으로 형변환 해주는 것
▶ 변수 타입 > 값 : 자동 형변환 가능
float f = 1234;
System.out.println(f);
// console
1234.0
▶ 변수 타입 < 값 : 자동 형변환 불가능
▷ 값손실 발생
int i = 3.14f; // 에러
▷ 수동 형변환 가능
int i = (int)3.14f;
System.out.println(i);
// console
3
▶ 예시
▷ byte → int
▷ int → byte
▶ 자동 형변환 정리
▶ 예외
▷ 예외 1. 변수 타입 < 값 : 자동 형변환 불가한 조건지만 가능한 경우
byte b = 100; // byte(-128 ~ 127)의 범위 안에 리터럴(100)이 들어감 → 자동 형변환 가능
▷ 예외 1과 비슷하지만 → 자동 형변환 불가한 경우 1
int i = 100;
byte b = i; // 에러, i는 리터럴이 아닌 변수, 변수 내 값이 바뀔 수 있기 때문에 에러를 냄
▷ 예외 1과 비슷하지만 → 자동 형변환 불가한 경우 2
byte b = 1000; // 에러, 1000이 변수 아닌 리터럴이지만 byte(-128 ~ 127)의 범위를 넘어감 → 값손실 발생 → 수동 형변환