[Java 기초] int ↔ String 형변환
Java를 공부하다 보면 자주 마주치는 개념 중 하나가 형변환입니다.
특히 int와 String 간의 변환이나, 기본형 타입 간 자동형변환(묵시적 형변환)은 자바 입문자들이 혼동하기 쉬운 부분인데요.
이번 포스팅에서는 자바에서 자주 쓰이는 형변환 케이스들을 예제와 함께 깔끔하게 정리해보겠습니다.
✅ int ↔ String 변환은 자동형변환이 불가능해요
자바에서는 int와 String 간의 변환이 자동형변환(implicit casting)으로는 이루어지지 않습니다. 즉, 반드시 명시적인 방법을 사용해야 해요.
int a = 123;
String s = Integer.toString(a); // int → String
String str = "456";
int b = Integer.parseInt(str); // String → int
💡 Integer.toString()과 Integer.parseInt()는 가장 많이 사용하는 방법이에요.
✅ 기본형 간 자동형변환 가능한 경우
자바에서는 작은 타입 → 큰 타입으로의 변환은 자동으로 이루어집니다. 이를 묵시적 형변환(자동형변환)이라고 해요.
작은 타입 | → | 큰 타입 |
---|---|---|
byte | → | short |
short | → | int |
char | → | int |
int | → | long |
long | → | float |
float | → | double |
- 예시 코드:
int i = 10;
long l = i; // OK: int → long
float f = l; // OK: long → float
double d = f; // OK: float → double
이처럼 크기가 더 큰 타입으로의 변환은 자동으로 처리돼서 편리합니다.
⚠️ 자동형변환이 안 되는 경우는 언제일까요?
반대로, 큰 타입 → 작은 타입으로 변환할 때는 자동형변환이 안 됩니다. 이 경우에는 반드시 명시적 형변환(casting)을 해줘야 해요.
double d = 3.14;
int i = (int) d; // 소수점 버려짐
long l = 10000000000L;
int x = (int) l; // 값 손실 가능성 있음
값 손실 가능성 때문에, 큰 타입에서 작은 타입으로 변환할 때는 주의가 필요합니다.
✅ 자주 쓰이는 자동형변환 예시
자바 기본형 간에는 생각보다 많은 자동형변환이 이루어져요. 아래는 실무에서 자주 쓰이는 간단한 예시입니다.
char c = 'A';
int x = c; // OK: char → int
byte b = 10;
int y = b; // OK: byte → int
이처럼 char, byte, short → int 변환은 자동으로 이뤄지므로 따로 형변환하지 않아도 됩니다.
❌ 특이한 자동형변환 케이스: String과 int 연산
String은 기본형이 아닌 객체이기 때문에, 자동형변환이 되지 않습니다.
그러나 + 연산자를 사용할 때는 예외적으로 문자열 연결(String Concatenation)이 자동으로 발생해요.
int num = 10;
String s = "살아요";
String result = num + s; // "10살아요"
int + String은 숫자 덧셈이 아닌 문자열 연결로 처리되니 주의하세요!
마무리하며: 형변환 개념은 자바의 기본!
자바에서 자동형변환은 대부분 기본형끼리 이루어지며,
int ↔ String처럼 타입이 완전히 다를 경우에는 명시적인 변환이 필요하다는 점을 기억해두면 좋습니다.
실무에서 특히 String과 숫자 간의 변환은 많이 사용되니 꼭 숙지하세요!