long 타입으로 변수를 선언하고 값을 초기화 할 때에는 반드시 리터럴 뒤에 소문자나 대문자 L을 붙여주어야 한다.
아래 에러가 뜨는 이유는 2147483648 이라는 값은 변수 lo에 저장하기 전에 임시로 메모리에 저장되는데, 이때 사용하는 기본 데이터 타입이 int 이고 허용 범위를 초과하는 리터럴은 임시로 저장하는 과정에서 에러가 나는 것이다.
이것을 해결하려면 아래와 같이 리터럴 끝에 l을 붙여주면 된다.
float도 비슷한 맥락의 이유로 에러가 난다. float의 데이터 값을 변수에 저장하기 전에 이 값을 메모리에 임시로 저장하는데, 이때 저장되는 타입이 double이다.
double은 8 바이트의 데이터 타입이고, float는 4 바이트다. 1199.80이라는 수는 8바이트의 double 타입으로 임시 저장되는데, double 타입으로 임시저장된 리터럴을 4 바이트의 좁은 float 타입의 변수에 옮겨 담으려니 공간이 좁아 저장 할 수가 없어 에러가 나는것이다.
이것을 해결하려면 아래와 같이 끝에 f를 붙여주면 된다.
long,float 의 값 뒤에 L,F 을 붙여야 하는 이유 — hyeindev's IT record (tistory.com)
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] Comparable과 Comparator : 비교를 위한 인터페이스 (0) | 2024.10.22 |
---|---|
[Java] Collections 클래스 (0) | 2024.10.22 |
[Java] Generic 제네릭 (0) | 2024.10.22 |
[Java] BigDecimal (0) | 2024.09.04 |
[Java] 자료형 정리 (0) | 2024.09.04 |