JVM/Java
[Java] 22년 부터는 Integer 타입을 사용할 때 조심하자!
Hyo Kim
2022. 1. 6. 20:56
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
반응형