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)을 위한 추가 자원이 사용될 수 있기 때문이다.
'Java' 카테고리의 다른 글
[Java] JSONArray에서 JSONObject 값 얻어오기 (0) | 2020.07.12 |
---|---|
[Java] java.lang.ArrayIndexOutOfBoundsException (0) | 2020.06.13 |
Java String을 int로 변환, int를 String으로 변환 - String to int, int to String (0) | 2020.05.27 |
Java 리스트(List) 구현 - ArrayList, Vector, LinkedList (0) | 2020.05.24 |
Java byte array를 String으로 String을 byte array로 변환 (2) | 2020.05.15 |
Java String을 Json으로, Json을 String으로 변환 (0) | 2020.05.04 |
java.lang.IndexOutOfBoundsException (0) | 2020.05.04 |
Java List UnsupportedOperationException (0) | 2020.04.23 |