Java에서 문자열(String)을 정수(Int)로 어떻게 변환할 수 있을까요? 문자열에 숫자만 포함되어 있다면 Integer.parseInt() 또는 Integer.valueOf()를 사용하는 것이 가장 좋은 방법입니다.
반면 문자열에 숫자와 문자가 함께 섞여 있다면, 먼저 정규식(Regular Expression)을 사용해 숫자만 추출한 후, 추출된 문자열을 Int로 변환해야 합니다.
한 가지 주의할 점은 parseInt(String)은 기본 타입(primitive)인 int를 반환하는 반면, valueOf(String)은 Integer 객체를 반환한다는 것입니다.
Java에서 문자열을 Int로 변환하기
1. Integer.parseInt() 사용
public class ConvertStringToInt {
public static void main(String[] args) {
String stringNumber = "1234";
int number = convertStringToInt(stringNumber);
System.out.println(number);
}
private static int convertStringToInt(String number) {
return Integer.parseInt(number);
}
}
실행 결과:
1234
2. Integer.valueOf() 사용
public class ConvertStringToInt {
public static void main(String[] args) {
String stringNumber = "1234";
int number = convertStringToInt(stringNumber);
System.out.println(number);
}
private static int convertStringToInt(String number) {
return Integer.valueOf(number);
}
}
실행 결과:
1234
주의할 점은, 문자열에 "1234abcd"처럼 숫자와 문자가 함께 포함되어 있으면 Javadoc에 명시된 대로 NumberFormatException이 발생한다는 것입니다. 따라서 변환 전에 입력값이 유효한 숫자 형식인지 반드시 검증하거나, 예외 처리를 함께 구현하는 것이 안전합니다.
- Java에서 toString()을 오버라이드해야 하는 이유
- Java에서 문자열 뒤집는 방법
- 문자열에서 숫자만 추출하는 방법
- Java에서 문자열 비교하는 방법
3. Integer.decode() 사용
Integer.decode() 메서드도 활용할 수 있습니다. decode의 흥미로운 특징은 10진수(base 10), 16진수(base 16) 등 다양한 진법의 문자열도 변환할 수 있다는 점입니다.
public class ConvertStringToInt {
public static void main(String[] args) {
String stringNumber = "1234";
int number = convertStringToInt(stringNumber);
System.out.println(number);
}
private static int convertStringToInt(String number) {
return Integer.decode(number);
}
}
실행 결과:
1234
4. Apache Commons NumberUtils 클래스 사용
마지막으로 Apache Commons의 NumberUtils 클래스를 사용하여 Java에서 문자열을 Int로 변환할 수 있습니다.
먼저 pom.xml 파일에 아래 의존성을 추가합니다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
그다음 아래와 같이 사용하면 됩니다.
import org.apache.commons.lang3.math.NumberUtils;
public class ConvertStringToInt {
public static void main(String[] args) {
String stringNumber = "1234";
int number = convertStringToInt(stringNumber);
System.out.println(number);
}
private static int convertStringToInt(String number) {
return NumberUtils.toInt(number);
}
}
실행 결과:
1234
NumberUtils.toInt()는 변환에 실패할 경우 예외를 던지지 않고 기본값인 0을 반환하므로, 잘못된 입력이 자주 들어올 수 있는 상황에서 안전하게 활용할 수 있는 장점이 있습니다.