🔍 데이터 타입 변환 (형 변환, Type Casting)
형 변환은 데이터를 다른 타입으로 변경하는 작업
자바에서는 기본 타입(Primitive Type)과 참조 타입(Reference Type)을 변환하는 다양한 방법이 제공됨
✨ 결론
자동 형 변환과 명시적 형 변환
- 자동 형 변환은 JVM이 안전하다고 판단되면 스스로 수행함
- 명시적 형 변환는 직접 형 변환을 지정해주는 것이며, 데이터 손실 가능성을 주의해야 함
기본 타입 ↔ String
변환 시, String.valueOf
와 parseInt
/parseDouble
등의 메서드를 활용할 것
형 변환은 유연성을 제공하지만, 적절히 사용하지 않으면 오류와 데이터 손실이 발생할 수 있으니 주의하여 사용할 것
🔄 기본 타입 간 형 변환
자바의 기본 타입 간 변환은 자동 형 변환(implicit casting)과 명시적 형 변환(explicit casting)으로 나뉨
자동 형 변환 (Implicit Casting)
작은 데이터 타입 → 큰 데이터 타입으로 변환 시, JVM이 자동으로 변환함
예제: int
→ double
public class ImplicitCasting {
public static void main(String[] args) {
int num = 10;
double result = num; // 자동 형 변환
System.out.println("int에서 double로 변환: " + result); // 10.0 출력
}
}
예제: char
→ int
char
는 내부적으로 유니코드 값(정수)를 저장하므로, 변환이 가능함
public class CharToInt {
public static void main(String[] args) {
char c = 'A';
int ascii = c; // 자동 변환
System.out.println("char에서 int로 변환: " + ascii); // 65 출력
}
}
명시적 형 변환 (Explicit Casting)
큰 데이터 타입 → 작은 데이터 타입으로 변환 시, 데이터 손실 위험이 있으므로 명시적으로 캐스팅해야 함
예제: double
→ int
public class ExplicitCasting {
public static void main(String[] args) {
double num = 10.99;
int result = (int) num; // 명시적 형 변환
System.out.println("double에서 int로 변환: " + result); // 10 출력
}
}
예제: int
→ char
public class IntToChar {
public static void main(String[] args) {
int num = 66;
char c = (char) num; // 명시적 변환
System.out.println("int에서 char로 변환: " + c); // 'B' 출력
}
}
🔀 기본 타입 ↔ String
변환
int
↔ String
변환
예제: int
→ String
public class IntToString {
public static void main(String[] args) {
int num = 123;
String str = String.valueOf(num); // 방법 1
String str2 = Integer.toString(num); // 방법 2
System.out.println("int에서 String으로 변환: " + str);
}
}
예제: String
→ int
public class StringToInt {
public static void main(String[] args) {
String str = "123";
int num = Integer.parseInt(str); // 방법 1
int num2 = Integer.valueOf(str); // 방법 2
System.out.println("String에서 int로 변환: " + num);
}
}
double
↔ String
변환
예제: double
→ String
public class DoubleToString {
public static void main(String[] args) {
double num = 123.45;
String str = String.valueOf(num); // 방법 1
String str2 = Double.toString(num); // 방법 2
System.out.println("double에서 String으로 변환: " + str);
}
}
예제: String
→ double
public class StringToDouble {
public static void main(String[] args) {
String str = "123.45";
double num = Double.parseDouble(str); // 방법 1
double num2 = Double.valueOf(str); // 방법 2
System.out.println("String에서 double로 변환: " + num);
}
}
char
↔ String
변환
예제: char
→ String
public class CharToString {
public static void main(String[] args) {
char c = 'A';
String str = String.valueOf(c); // 방법 1
String str2 = Character.toString(c); // 방법 2
System.out.println("char에서 String으로 변환: " + str);
}
}
예제: String
→ char
public class StringToChar {
public static void main(String[] args) {
String str = "A";
char c = str.charAt(0); // 첫 번째 문자 추출
System.out.println("String에서 char로 변환: " + c);
}
}
⚠️ 주의
1️⃣ 데이터 손실 문제
큰 타입 → 작은 타입으로 변환할 때, 데이터 손실이 발생할 수 있음
public class DataLossExample {
public static void main(String[] args) {
int largeNum = 128;
byte smallNum = (byte) largeNum; // 128은 byte 범위 초과 (-128~127)
System.out.println("데이터 손실 발생: " + smallNum); // -128 출력
}
}
2️⃣ NumberFormatException
예외
String
을 숫자로 변환할 때, 형식이 맞지 않으면 예외가 발생함
public class NumberFormatExample {
public static void main(String[] args) {
String invalidNumber = "123a"; // 숫자가 아님
try {
int num = Integer.parseInt(invalidNumber);
} catch (NumberFormatException e) {
System.out.println("형식이 잘못된 String: " + invalidNumber);
}
}
}
'CodingTest > Java Grammar Notes' 카테고리의 다른 글
[Java] Deque (1) | 2025.03.24 |
---|---|
[Java] 딕셔너리, Map (3) | 2024.12.20 |
[Java] StringTokenizer, String.split() (0) | 2024.12.12 |
[Java] BufferedReader, Scanner (2) | 2024.12.05 |