Integer.parseInt() 와 Integer.valueOf() 의 차이점
자바에서 문자(String)에서 숫자(int)형으로 형변환 할때 쓰이는 API가 Interger 입니다.
이중에서 Integer.parseInt() 와 Integer.valueOf() 의 차이점을 알아 보도록 하겠습니다.
목적은 같지만 차이점이 분명이 존재 함으로 잘 숙지 하셔서 Exception에 대응 하시기 바랍니다.
결론부터 말씀드리면
parseInt()는 기본 유형 int를 반환합니다.
valueOf() 는 Integer 객체를 반환합니다.
parseInt() 아래 메서드 내부를 보시면 단순히 int를 반환하는걸 확인 할 수 있습니다.
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
valueOf() 아래 메서드 내부를 보시면 스트링을 변환을 한뒤 최종적으로 valueOf()메서드를 호출하는 것을 확인 할 수 있습니다.
실제 valueOf메서 -128~127사이의 캐쉬값을 가지고 오며 범위에서 벗어나면 새로운 객체를 만들어 리턴 합니다.
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) {
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
결론적으로
parseInt는 음수반환가능 산술연산 가능하지만 valueOf 는 음수를 반환하지 못하며, 산술연산도 불가능 합니다..
parInt는 int 자료형을 반환하며 valueOf는 Integer 클래스를 반환합니다.
참고. 자바 객체 타입
Wrapper Type -> Integer, Long, Short, Byte, Float, Double, Character, Boolean
Primitive Type -> int, long, short, byte, float, double, char, boolean