본문 바로가기

카테고리 없음

Integer.parseInt() 와 Integer.valueOf() 의 차이점

Integer.parseInt()  와 Integer.valueOf() 의 차이점

자바에서 문자(String)에서 숫자(int)형으로 형변환 할때 쓰이는 APIInterger 입니다.

이중에서 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 는 음수를 반환하지 못하며, 산술연산도 불가능 합니다..

parIntint 자료형을 반환하며 valueOfInteger 클래스를 반환합니다.


참고. 자바 객체 타입

Wrapper Type -> Integer, Long, Short, Byte, Float, Double, Character, Boolean

Primitive Type -> int, long, short, byte, float, double, char, boolean