728x90
반응형
😲서론
21년까지 잘 작동하던 Integer.valueOf() 에서 NumberFormatException이 발생했다.
🤔본론
(코드는 보기 쉽게 하기 위해 실제 코드와 다르게 작성하였습니다.)
public static void main(String[] args) {
String value = "2201060002";
String defaultValue = "221060001";
Optional.ofNullable(value)
.map(Integer::valueOf)
.map(num -> num += 1)
.map(String::valueOf)
.orElse(defaultValue);
}
간단한 패턴 값을 만드는 로직이었다.
패턴 - YYMMDDXXXX
해당일자의 고유한 값을 저장하기 위해서,
value값이 있으면 +1을 더하고, 없으면 defaultValue를 넣어주는 간단한 로직이었다.
그런데 22년도가 되자마자 Integer::valueOf 부분에서 NumberFormatException 가 발생했다.
해당원인은 값의 범위였다.
Integer의 범위
-2,147,483,648 ~ 2,147,483,647 |
21년도까지는 Integer의 범위 안에서 놀았지만, 22년도 부터는 Integer범위를 벗어 났던 것..
공부할 때는 Integer도 크다고 느꼈기에 범위를 생각하지 못 하고, 항상 기본으로 Integer를 사용하였었다.
하지만, 이번 계기로 Integer의 범위를 확실히 알 수 있었고
범위를 생각하지 못한 채 코드를 짠 내 실수를 깨닫게 되었다.
숫자가 어느정도 크다고 느껴지면 앞으로는 마음 편하게 Long을 써야겠다..
728x90
반응형
'JVM > Java' 카테고리의 다른 글
[Java] GC Implementations - 가비지 컬렉션 구현 (1) | 2022.03.13 |
---|---|
[Java] GC (Garbage Collection) ?? (0) | 2022.03.13 |
[Java] static inner class 는 언제 로드가 될까? 로드와 초기화? (20) | 2021.11.25 |
[Java] junit5 파라미터로 List 전달하는 방법 (0) | 2021.11.19 |
[Java]Stack 대신 Deque 사용하기 (0) | 2021.09.20 |