코드상으로는 같아 보인다
package codeplay;
public class ValueofAndtoString {
public static void main(String[] args) {
String str = "2";
int a = Integer.parseInt(str);
int b = Integer.valueOf(str);
System.out.println(a);
System.out.println(b);
}
}
2
2
그런데 내부를 살펴보면 반환형이 다르다
Integer.class 를 보면
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
parseInt의 경우는 int형. 즉 프리미티브 타입으로 반환하고
valueOf의 경우는 Integer형(뤱퍼객체:리퍼런스타입) 으로 반환한다
당연히 int형으로 반환하는 parseInt가 빠르다
적절하게 사용해주면 좋을듯 !!
자바에서의 프리미티브 타입
- byte, short, int, long, char : 정수타입
- float, double : 부동소수점 타입
- boolean
자바에서의 리퍼런스 타입
- 클래스
- 인터페이스
- 배열타입
- 열거타입