String s = "123";
int n = Integer.parseInt(s); // int 변환
double d = Double.parseDouble(s); // double 변환
개념
형변환(Casting)이란 데이터 타입을 다른 타입으로 바꾸는 것을 의미한다.
Java는 강타입 언어로 타입이 다르면 연산, 대입이 불가능하기때문에 형변환을 반드시 해주어야한다.
종류
자동 형변환(묵시적)
- 작은 타입 → 큰 타입으로 자동 변환
- 데이터 손실 가능성이 없는 경우에만 가능
int n = 10;
double d = n; // 자동으로 int → double
System.out.println(d); // 10.0
byte → short → int → long → float → double
강제 형변환(명시적)
- 큰 타입 → 작은 타입 또는 타입 간 변환이 필요할 때 사용
- (타입)을 붙여서 명시적으로 변환
double d = 3.14;
int n = (int)d; // 소수점 아래 버림
System.out.println(n); // 3
데이터 손실 가능성이 있기 때문에 주의해야한다.
숫자 <-> String
숫자 -> String
| 메서드 |
예시 코드 |
설명 |
| String.valueOf() |
String s = String.valueOf(123); |
✅ 가장 안전하고 널(null) 처리 가능 |
| Integer.toString() |
String s = Integer.toString(123); |
타입에 맞는 Wrapper 클래스의 toString() |
| + "" |
String s = 123 + ""; |
간단하지만 비추천 (성능↓, 가독성↓) |
| String.format() |
String s = String.format("%d", 123); |
포맷 지정 가능 (%f, %02d 등) |
int num = 123;
String s1 = String.valueOf(num);
String s2 = Integer.toString(num);
String s3 = num + "";
숫자 -> String
메서드 예시 코드 변환 대상
| 메서드 |
|
| Integer.parseInt() |
int |
| Double.parseDouble() |
double |
| Long.parseLong() |
long |
| Float.parseFloat() |
float |
| Integer.valueOf() |
Wrapper 객체 반환 |
- Integer.valueOf(String) → Integer 객체 생성
Integer obj = Integer.valueOf("123");
System.out.println(obj); // 123
System.out.println(obj.getClass()); // class java.lang.Integer
String "123"
|
v
Integer.valueOf("123") ----> [Integer 객체]
|
v
.intValue() ----> 123 (기본형)
숫자 <-> char
숫자 -> char
| 예시 코드 |
출력 |
설명 |
| (char)65 |
'A' |
아스키 코드 65 → 문자 A |
| (char)(num + '0') |
'3' |
숫자 3 → 문자 '3' |
| '0' + 1 |
'1' |
문자 연산도 가능 |
char -> 숫자
| 예시 코드 |
출력 |
설명 |
| '7' - '0' |
7 |
문자 '7' → 정수 7 |
| (int)'A' |
65 |
문자 'A'의 유니코드 값 |
| Character.getNumericValue('9') |
9 |
유니코드 기반 숫자 변환 |
String <-> char
String -> char
| 메서드 |
설명 |
| .charAt(index) |
인덱스로 한 글자 추출 |
| .toCharArray() |
전체를 문자 배열로 변환 |
String s = "Java";
char first = s.charAt(0); // 'J'
char[] arr = s.toCharArray(); // {'J','a','v','a'}
char -> String
| 메서드 |
설명 |
| String.valueOf(c) |
가장 일반적인 방법 |
| Character.toString(c) |
동일 기능 |
| "" + c |
빠르지만 권장X |
char c = 'A';
String s1 = String.valueOf(c);
String s2 = Character.toString(c);