/ JAVAJUNGSUK

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)의 범위를 넘어감 → 값손실 발생 → 수동 형변환