728x90
반응형
Java에서 String을 숫자 값으로 변형할 때 Integer.parseInt() 와 Integer.valueOf() 메소드를 많이 사용한다.
하지만 이 두 메서드에도 약간의 차이가 있다.
1. parseInt 와 valueOf의 차이점
parseInt() -> 원시 데이터인 int 타입을 반환
valueOf() -> Integer 래퍼(wrapper) 객체를 반환
parseInt() 의 소스코드
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
parseInt() 메서드는 전달받은 인자를 파싱하고 기본데이터 타입인 int 로 반환한다.
valueOf() 의 소스코드
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
}
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
valueOf() 메서드는 String을 parseInt() 메소드로 전달하고 이 작업을 통해 String을 int 데이터로 변환하여 반환한다.
그 다음 valueOf() 메서드가 호출되며, 반환받은 int 타입이 이 메서드로 전달된다. 이 메서드 내에는 -128 부터 127 범위의 Integer 들을 관리하는 풀을 사용하고 있다.
따라서 전달한 int가 캐쉬범위 내에 포함되어 있으면 객체 풀에서 Integer를 거내와 반환하고, 캐쉬범위에 포함되지 않을 경우 새로운 객체를 생성한다.
2. 결론
기본 int 가 필요하면 parseInt()
Integer 래퍼 객체가 필요하면 valueOf() 를 사용하면 된다.
반응형
'Java' 카테고리의 다른 글
[Java] StringTokenizer 문자열 분리 (split과 차이) (0) | 2024.06.14 |
---|---|
[Java] System.arraycopy 사용법 (0) | 2024.03.22 |
[Java] 객체지향 언어의 특징 (0) | 2023.12.14 |
[Java] Vector (0) | 2023.11.21 |
[Java] Map 의 getOrDefault 사용법 (0) | 2023.11.20 |