JAVA 형변환 Integer parseInt와 valueOf 차이

자바에서 숫자 타입의 데이터 형변환을 할때 Integer 클래스의 parseInt 또는 valueOf 사용합니다.

둘다 정수형 타입으로 형변환도 해주고 같은 값을 반환합니다.

하지만 둘은 조금 차이가 있습니다.

어떠한 부분에서 차이가 있는지 확인해보겠습니다.

 

Integer.parseInt 와 Integer.valueOf 차이

문자열을 Integer.parseInt Integer.valueOf로 형변환을 해보면서 어떠한 차이가 있는지 샘플을 보겠습니다.

public class Program
{
    public static void main(String[] args) {

        String strnum = "10";
        
        int intnum1;
		int intnum2;

        intnum1 = Integer.parseInt(strnum);
        intnum2 = Integer.valueOf(strnum);
        
        System.out.println("intnum1 : " + intnum1);
        System.out.println("intnum2 : " + intnum2);

	}
}

 

결과

intnum1 : 10
intnum2 : 10

 

문자열 10을 숫자 타입 10으로 형변환을 했습니다.

결과값으로만 보면 같아보이지만 데이터 타입을 좀더 상세하게 확인해보겠습니다.

데이터 타입을 확인하는 함수는 getClass().getName()를 사용해 형변환을 한 데이터 타입을 확인하겠습니다.

public class Program
{
    public static void main(String[] args) {

        String strnum = "10";
        
        System.out.println(Integer.parseInt(strnum).getClass().getName());
        System.out.println(Integer.valueOf(strnum).getClass().getName());

	}
}

 

결과

./Playground/Program.java:8: error: int cannot be dereferenced
        System.out.println(Integer.parseInt(strnum).getClass().getName());
                                                   ^
1 error

 

숫자 타입으로 형변환 데이터 타입을 확인하기 위해 작성한 .getClass().getName()에서 에러가 발생했습니다.

발생한 부분은 parseInt.getClass().getName()에서 발생했습니다.

에러가 발생한 이유는 Integer.parseInt로 형변환을 하는 경우에는 반환되는 타입이 int 타입입니다.

int 타입에는 getClass() 메서드가 존재하지 않기때문에 에러가 발생합니다.

Integer.parseInt를 주석처리 하고 다기 실행해 보겠습니다.

public class Program
{
    public static void main(String[] args) {

        String strnum = "10";
        
        // System.out.println(Integer.parseInt(strnum).getClass().getName());
        System.out.println(Integer.valueOf(strnum).getClass().getName());

	}
}

 

결과

java.lang.Integer

 

이번에는 에러가 발생하지않고 형변환을 한 데이터 타입이 출력되었습니다.

Integer.valueOf로 형변환을 한 경우에는 데이터 타입이 Integer인거를 알 수 있습니다.

Integer인 경우에는 데이터 타입을 확인 할 수 있는 getClass().getName()를 사용할 수 있습니다.

 

정리

문자열을 숫자 타입으로 형변환 할때 사용하는 Integer.parseInt Integer.valueOf 차이점을 알아봤습니다.

반환값을 동일하지만 Integer.parseInt로 형변환을 하면 int 타입으로, Integer.valueOf로 형변환을 하면 Integer 타입으로 데이터를 반환합니다.

댓글