순간을 기록으로

[Java] parseInt vs ValueOf의 차이 본문

Development/JAVA

[Java] parseInt vs ValueOf의 차이

luminous13 2022. 5. 31. 00:05

 

안녕하세요 luminous13입니다. 오늘은 parseInt()와 valueOf()의 차이점에 대해 알아보겠습니다.

문자열을 숫자로 형변환을 할 때 우리는 2가지 방법을 사용할 수 있습니다.예시를 들면 아래와 같습니다.

String str = "123";
int num1 = Integer.parseInt(str);
int num2 = Integer.valueOf(str);

System.out.println("num1 = " + num1); // 123
System.out.println("num2 = " + num2); // 123

두 변환값 모두 출력값은 동일합니다. 그럼 무슨 차이가 있을까요?

 

1.parseInt(String s) - 반환형이 기본 자료형(primitive type)

public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
}

여러 Integer, Long, Double 타입 중 Integer를 예를 들어 설명하겠습니다.

parseInt는 반환형이 기본 자료형 타입입니다. 따라서 만약 반환형을 기본 자료형으로 하고 싶으면 parseInt를 사용하면 됩니다.

 

추가 정보로 그리고 parseInt는 오버로딩이 되어있는 메서드입니다. 뒤에 매개변수로 int radix가 추가로 있는 메서드가 있습니다. radix는 기수를 의미하고 기수는 다음과 같다.

  • 123 = 1*10^2 + 2*10^1 + 3*10^0
  • 여기서 10이 바로 기수입니다.

기본적으로 매개변수가 1개면 기수를 10으로 가정합니다.

Integer.valueOf("444",16); // 반환값: 1092

위의 코드를 식으로 해석하자면 다음과 같습니다.

  • 4*16^2 + 4*16^1 + 4*16^0 = 1092

2.valueOf() - 반환형이 객체타입

public static Integer valueOf(String s) throws NumberFormatException {
        return Integer.valueOf(parseInt(s, 10));
}

valueOf는 반환형이 객체 타입입니다. Integer.valueof()의 경우 반환형이 Integer 이죠.

만약 Wrapper 클래스를 반환하고 싶으면 valueOf를 사용하면 됩니다.

valueOf도 parseInt와 마찬가지로 오버로딩이 되어있습니다. 그리고 내용은 위와 동일합니다.

Comments