자동 확대 변환과 명시적 축소 변환을 이해합니다.
작은 정수형에서 큰 정수형으로는 보통 자동 변환되지만 범위나 정밀도를 잃을 수 있는 변환에는 cast가 필요합니다. 문자열 변환은 parseInt 같은 메서드를 사용합니다.
Integer.parseInt가 문자열 88을 정수 88로 바꾸고, Math.toIntExact(120L)은 120이 int 범위 안이라 그대로 돌려줍니다. views 끝의 L은 long 리터럴 표시인데 30억은 int 최댓값인 약 21억을 넘기 때문에 L이 없으면 컴파일 오류가 납니다. 이 views를 (int)로 바꾸면 -1294967296이라는 엉뚱한 값이 되고, Math.toIntExact에 넘기면 ArithmeticException이 발생합니다.
축소 변환은 상위 비트나 소수 부분을 잃을 수 있습니다. 변환 전에 범위를 검사하거나 Math.toIntExact를 사용합니다.
API 경계에서 숫자 범위와 단위를 검증해 내부에서는 올바른 타입만 사용하게 합니다.
cast는 값을 올바르게 만드는 검증이 아니며 큰 long을 int로 바꾸면 전혀 다른 값이 될 수 있습니다.
직접 바꿔보세요문자열 점수를 정수로 변환하고 범위를 검사하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.