Type Casting(형 변환)
Java에서 형 변환은 데이터 타입을 다른 타입으로 바꾸는 작업을 의미한다.
Java에서는 기본 자료형(Primitive Type)과 참조 자료형(Reference Type)에 대해 형 변환을 지원하며,
형 변환은 크게 자동 형 변환(Implicit Casting)과 명시적 형 변환(Explicit Casting)으로 나눌 수 있다.
Primitive Type Casting (기본 자료형 형 변환)
기본 자료형의 형 변환은 크게 두 가지 방식으로 이루어진다.
자동 형 변환 (Implicit Casting / Widening Casting)
작은 데이터 타입에서 큰 데이터 타입으로 변환할 때 자동으로 수행된다.
예: byte -> short -> int -> long -> float -> double
데이터의 손실이 발생하지 않기 때문에 안전하게 변환이 가능하고, 명시적으로 캐스팅하지 않아도 된다.
int num = 10;
double doubleNum = num; // int에서 double로 자동 변환
System.out.println(doubleNum); // 출력: 10.0
명시적 형 변환 (Explicit Casting / Narrowing Casting)
큰 데이터 타입을 작은 데이터 타입으로 변환할 때는 명시적으로 형 변환을 해주어야 한다.
예: double -> float -> long -> int -> short -> byte
데이터 손실이 발생할 수 있기 때문에 신중하게 사용해야 한다.
double doubleNum = 10.99;
int intNum = (int) doubleNum; // double에서 int로 명시적 형 변환
System.out.println(intNum); // 출력: 10 (소수점 이하 손실)
Reference Type Casting (참조 자료형 형 변환)
참조 자료형에서는 주로 상속 관계가 있는 클래스 간의 형 변환이 이루어 진다.
업캐스팅 (Upcasting)
- 자식 클래스의 객체를 부모 클래스 타입으로 변환한다.
- 암시적으로 수행될 수 있으며, 일반적으로 안전하다.
- 업캐스팅은 다형성을 활용하기 위해 자주 사용된다.
class Animal {}
class Dog extends Animal {}
Animal animal = new Dog(); // Dog 객체를 Animal 타입으로 업캐스팅
다운캐스팅 (Downcasting)
- 부모 클래스 타입의 객체를 자식 클래스 타입으로 변환할 때 사용한다.
- 반드시 명시적으로 캐스팅해야 하며, 변환이 잘못되면 ClassCastException이 발생할 수 있다.
- 다운캐스팅은 업캐스팅된 객체에만 사용 가능하다.
Animal animal = new Dog();
Dog dog = (Dog) animal; // 명시적으로 다운캐스팅
Wrapper 클래스 형 변환 (Boxing & Unboxing)
Java는 기본 자료형을 객체로 다루기 위해 각 타입에 해당하는 래퍼 클래스를 제공한다.
AutoBoxing
int num = 5;
Integer wrappedNum = num; // 자동으로 Integer로 변환
Unboxing
Integer wrappedNum = 10;
int num = wrappedNum; // 자동으로 int로 변환
문자열 형 변환
문자열을 기본 자료형으로 반환하거나 그 반대로 변환하는 방법도 있다.
문자열을 기본 자료형으로 변환
String strNum = "123";
int num = Integer.parseInt(strNum);
기본 자료형을 문자열로 변환
int num = 123;
String strNum = String.valueOf(num);
'Java' 카테고리의 다른 글
Java 조건문 (if, if else, switch case) (0) | 2024.11.14 |
---|---|
Java 문자열 (String) (1) | 2024.11.14 |
Java 배열 (Array) (0) | 2024.11.13 |
Java 변수와 상수 (0) | 2024.11.12 |
Java 자료형 정리 (Java Data Type) (1) | 2024.11.11 |