1. 형변환(Type Casting)
교재 p.61-63 2.2 변수와 자료형
1️⃣ 형변환이란?
한 자료형의 값을 다른 자료형으로 변환하는 것
2️⃣ 형변환이 필요한 이유
자료형마다 저장 크기와 표현 범위가 다름 → 컴퓨터는 자료형이 다르면 계산이나 저장을 마음대로 할 수 없음
int a = 10;
double b = a; // int → double➡ 정수 값을 실수 변수에 저장하려면 형변환이 필요
3️⃣ 형변환의 종류
2) 자동 형변환(묵시적 형변환, Upcasting)
개념
- 작은 타입 → 큰 타입
- 데이터 손실 ❌
- 자바가 자동으로 처리
작은 타입 | → | 큰 타입 |
byte | → | short |
short | → | int |
int | → | long |
long | → | float |
float | → | double |
작은 타입 | → | 큰 타입 |
char | → | int |
int | → | long |
long | → | float |
float | → | double |
예
int a = 10;
double b = a; // 자동 형변환자동으로 형변환을 해주는 이유 → 정보가 손실될 위험이 없기 때문
⚠️ char 형변환(시험 단골)
char c ='A';
int n = c; // 65int x = 66;
char y = (char)x; // 'B'➡ char ↔ int 변환 가능 (ASCII/Unicode)
3) 강제 형변환(명시적 형변환, Downcasting)
개념
- 큰 타입 → 작은 타입
- 데이터 손실 위험성 ⭕
- 직접 명시해야 함
예
double a = 3.14;
int b = (int) a; // 강제 형변환
// 결과
b = 3;
// 소수점 .14는 버려짐 -> 데이터 손실왜 강제로 형변환 해야 하는 이유 → 정보의 손실 위험성 때문에 개발자가 책임지고 변환한다는 의미
4) 참조형 형변환 (객체 타입 형변환)
참조형(클래스)도 형변환이 가능함
⚠️ 단, 상속 관계에서만 가능
① 업캐스팅(Upcasting) - 자동
자식 클래스 → 부모 클래스
Dog d = new Dog();
Animal a = d; // 자동 형변환② 다운캐스팅(Downcasting) - 강제
부모 클래스 → 자식 클래스
Animal a = new Dog();
Dog d = (Dog) a; // 강제 형변환5) 기본형 ↔ 참조형 형변환 (Wrapper)
오토박싱 / 언박싱
Integer a= 10; // 오토박싱 (int → Integer)
int b = a; // 언박싱 (Integer → int)⚠️ 자바에서 오토박싱과 언방식 다 자동 지원 되지만 🚨null 값 주의🚨
→ Integer는 null값 넣을 수 있지만, int 자료형은 null 값 들어갈 수 없음
Integer n = null;
int m = n; // NullPointerException4️⃣ 실습
package ex02;
public class TypeConversion {
public static void main(String[] args) {
int i;
double f;
f = 1 / 5;
System.out.println(f);
f = (double) 1 / 5;
System.out.println(f);
i = (int) 1.7 + (int) 1.8;
System.out.println(i);
}
}Share article