변수도 데이터 타입이 있고, 상수도 데이터 타입이 있다.
여러분이 어떤 실수를 쓰려고 하면, 기본적으로 double을 쓰고, 만약 float를 쓰고 싶다면 F를 붙여주면 된다.
(주의!, 아래 예제들은 좌항과 우항의 데이터 타입이 일치하기 때문에 명시적 형변환도 묵시적 형변환도 아니다.
F라는 문자를 붙여주어서, 2.2F가 float 타입이라고 명시해주어서 데이터 타입을 서로 맞춰주었다.
🔍 F를 붙인 이유는?
이유: 2.2가 사실은 정확히 2.2가 아니고, 이진법으로 변환했을때 무한소수로 끝없이 이어지는데, 그 무한소수가 float 유효범위안에 들어오지 않기 때문에, 원래 상수 2.2의 데이터 타입은 double이다.
하지만 의도적으로 float 데이터 타입을 상수 2.2에 쓰고 싶어서 F를 붙여서 좌항과 우항의 데이터 타입을 맞춰준것 이다.
여기서 유효범위란 float 데이터 타입이 나타낼 수 있는 근사치의 범위이다.
🔍 2147483648은 long의 유효범위에 포함되지 않나? 왜 이런 결과가 나오는 거지??
=> 기본적으로 자바에서 정수형 상수는 int 취급을 한다 (참고로, 실수는 기본적으로 double 취급을 한다)
현재 변수 a의 타입은 long, 2147483648(정수형 상수)의 타입은 자바에서 기본적으로 int로 설정되어 있기 때문에
좌항과 우항의 데이터 타입이 서로 다르다.
그래서 L을 상수 뒤에 붙여서 데이터 타입을 동일하게 만들어야 한다.
편의를 위해서 byte 타입과 short 타입의 변수에 int타입에 상수를 할당하더라도 허용된다.
(단, byte와 short 범위를 넘지 않는한에서)
'Java' 카테고리의 다른 글
자바 별찍기 - 마름모 만들기 (0) | 2023.08.18 |
---|---|
스캐너(Scanner) : java의 입력기능 (0) | 2023.08.13 |
Java 형변환 - 자동 형변환 vs 명시적 형변환 (0) | 2023.08.11 |
Java 변수 (기본형, 참조형, 기본형의 타입) (0) | 2023.08.11 |
이중반복문 : 별 찍기 (2) | 2023.08.06 |