Java

Java parseInt() vs valueOf() 차이점, parseFloat() vs valueOf() 차이점

Darane 2020. 5. 11. 21:26

String으로 표현되는 숫자를 정수로 변환할 때 Integer.parseInt()나 Integer.valueOf()를 사용하고, 실수로 변환할 때는 Float.parsefloat()나 Float.valueOf()를 사용한다.

 

Integer.parseInt()나  Integer.valueOf() 두 API는 모두 String으로 표현된 숫자를 정수로 변환해주는데 둘의 차이점을 알지 못하고 사용하는 경우가 있다.

차이점을 먼저 이야기해보면 Integer.parseInt()는 원시형 타입(primitive type)인 int를 반환해주고,

Integer.valueOf()는 객체형(object data type)인 Integer를 반환해준다.

 

두 API의 실제 구현으로 차이점을 확인해보자.

 

1. Integer.parseInt()

: return type이 원시형인 int로 되어 있다.

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


2. Integer.valueOf()

: return type이 객체형인 Integer로 되어 있다.

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

 

Float.parseFloat(), Float.valueOf()도 위와 동일하게 Float.parseFloat()는 원시형 타입인 float를 반환해주고 Float.valueOf()는 객체형인 Float를 반환해준다.

 

두 API를 사용할 때 값을 받을 변수의 타입에 맞게 API를 선택하여 사용하면 된다.

원시형 타입(primitive type)을 사용하면 메모리를 더 절약할 수 있는 장점이 있다. 또한 값을 받을 변수에 맞게 사용하는 것이 좋다. 둘이 다를 경우 오토박싱(Autoboxing)이나 언박싱(Unboxing)을 위한 추가 자원이 사용될 수 있기 때문이다.

반응형