
여느 때와 같이 기계적으로 코드를 짜다가 문득 의문이 들었다.
Integer.parseInt(String s)
Integer.valueOf(String s)
String에서 int형으로 변환할 때 parseInt와 valueOf의 차이는 뭘까.
비슷해보이지만 반환 타입과 내부 동작이 다르다.
1. 반환 타입
parseInt()는 int 를 반환하고, valueOf()는 객체형인 Integer를 반환한다.
2. 내부 동작 차이
valueOf는 객체형을 반환하기 위해, 내부적으로 다음과 같이 동작한다.
즉, parseInt() + 객체 변환 까지 한 번에 처리되는 것이 valueOf()
Integer a = Integer.valueOf("100");
🔻 실제로 동작
int tmp = Integer.parseInt("100");
Integer obj = Integer.valueOf(tmp);
📑 핵심 차이점과 사용 시점 정리
| 구분 | parseInt | valueOf |
| 반환 타입 | primitive int | 객체 Integer |
| 객체 생성 | 없음 | 있거나, 캐싱 사용 |
| 성능 | 더 빠름 | 약간 느림 |
| null 처리 | *NFE 발생 | NFE 발생 |
| 언제 써야할까? | 계산하거나, DB 값을 처리하는 대부분의 상황 | 컬렉션에 넣는 등 객체가 필요하거나 null을 허용해야 할 때 |
* NFE : Number Format Exception (숫자로 변환 불가능)
728x90
'Java' 카테고리의 다른 글
| [Java] String to LocalDate (0) | 2023.08.13 |
|---|---|
| [Java] Optional로 Null 체크하기 - Java8이상 (0) | 2023.08.12 |
| [Java] equals NullPointerException(NPE) 다루기 (0) | 2023.08.11 |
| [Java] LocalDate 비교 (0) | 2023.08.10 |
| [JAVA] HashMap, LinkedHashMap - value로 key찾기 (0) | 2023.08.09 |