Java에서는 문자열을 정수로 변화하기 위해서는 두가지 방법이 있다.
Interger.valueOf()Interger.parseInt()
문자열을 기본형 정수(primitive type int)로 리턴
Integer.parseInt(String_varaible)
예를 먼저 보기 전에, 변환없이 문자열 값과 정수를 추가할 때 어떤일이 발생하는지 살펴보자.
class StrToInt {
public static void main(String[] args) {
String age = "10";
System.out.println(age + 20); //1020
}
}
age문자열 값이 "10"인 변수를 만들었다.
정수 값 20에 추가하면 30대신 1020이 된다.
하지만, parseInt()를 쓴다면 값이 달라질 것이다.
class StrToInt {
public static void main(String[] args) {
String age = "10";
int ageToInt = Integer.parseInt(age);
System.out.println(ageToInt + 20); // 30
}
}
age 변수를 정수로 변환하기 위해 parseInt() 메서드에 매개변수로 전달하고 Integer.parseInt(age) 라는 변수에 저장했다. (ageToInt)
그래서 결과값이 1020이 아닌 30으로 나왔다.
문자열이 유효한 숫자를 포함하지 않는다면 NumberFormatException이라는 예외문구가 뜬다. 그렇게 때문에 문자열을 int로 바꿀때는 항상 try-catch문으로 코드를 감싸서 이 익셉션를 처리해야 한다.
Interger.parseInt()를 써서 문자열을 int로 바꾸는 이 예시를 보자.
String str = "25";
try {
int num = Interger.parseInt(str);
System.out.println(num); // 25
}
catch(NumberFormatException ex) {
ex.printStackTrace();
}
이제 입력값에 유효하지 않은 정수를 대입해본다.
String str = "25T";
try {
int num = Interger.parseInt(str);
System.out.println(num); // 25
}
catch(NumberFormatException ex) {
ex.printStackTrace();
}
[결과값]
java.lang.NumberFormatException: For input string: "25T"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at OOP.StringTest.main(StringTest.java:51)
위에 있는 코드에서는 25T를 정수로 변환하려고 한다. 이는 유효한 입력값이 아니다. 그렇게 때문에 NumberFormatException을 쓰로우하게 된다.
valueOf() 메서드는 parseInt() 메서드와 동일하게 작동한다.
정수로 변환할 문자열을 매개변수로 사용한다.
class StrToInt {
public static void main(String[] args) {
String age = "10";
int ageToInt = Interger.valueOf(age);
System.out.println(ageToInt + 20); // 30
}
}
valueOf() 에 전달하고 Interger.valueOf(age) 의 변수 ageToInt 에 저장되었다.ageToInt + 20 의 결과값은 1020이 아닌 30이 된다.String str = "25";
try {
int num = Integer.valueOf(str);
System.out.println(num); // 25
}
catch(NumberFormatException ex) {
ex.printStackTrace();
}
유효하지 않는 값을 넣었을 경우 위 Integer.parseInt() try-catch문 예시와 동일하다.