상수와 리터럴
상수
한 번만 값이 저장 가능한 변수
선언 방법 :
final 변수타입 변수이름;
숫자에 의미있는 이름을 붙여 코드 자체의 가독성을 늘리기 위해 상수를 사용합니다. '시험의 만점은 100점이다.' 라는 예시를 들 수 있습니다.
리터럴
그 자체로 값을 의미하는 것
기존의 상수와 같은 의미입니다. 하지만 Java에서 상수를 '한 번만 값이 저장 가능한 변수' 라는 의미로 사용하기 때문에 이를 구별하기 위해 사용하는 용어입니다.
변수, 상수, 리터럴 구별하기
아래 예제코드를 사용하여 변수, 상수, 리터럴을 구별해 보겠습니다.
score
: 변수finalScore
: 상수100, 1000
: 리터럴
리터럴의 접두사와 접미사
위 이미지는 리터럴의 종류(타입)를 구분한 표입니다.
정수형은 byte, short, int, long 타입으로 여러 개 존재합니다.
정수형의 int, 실수형의 double은 기본형이기 때문에 접미사를 붙이지 않고, long 타입은 구분을 위해 100L 처럼 리터럴 마지막에 접미사로 L을 붙입니다.
byte, short 타입의 변수도 마찬가지로 리터럴 접미사가 존재하지 않고 int 타입과 똑같은 리터럴을 사용하여 저장합니다.
byte, short 타입은 연산에 이용하기보다는 저장 목적인 경우가 많아 Java 의 내장 변환모듈이 자동으로 형 변환시켜 줍니다.
실수형은 float, double 타입이 존재합니다.
float의 리터럴에는 f, double의 리터럴에는 d가 붙습니다.
실수형은 2개 밖에 존재하지 않기 때문에 접미사 f를 사용하면 구분을 할 수 있어서 접미사 d는 생략을 허용합니다.
따라서, 리터럴에 붙이는 접미사는 정수형의 L , 실수형의 f 만 주의하시면 됩니다.
접미사는 대소문자를 구별하지 않지만 L 의 소문자 l 은 숫자 1 과 혼동되기 쉽기 때문에 대문자를 사용하는 것이 좋습니다.
0b, 0x 와 같은 진수를 나타내는 접두사 또한 대소문자를 구별하지 않습니다.
아래 예제코드를 통해 리터럴의 사용 방법을 학습하겠습니다.
변수와 리터럴의 타입 불일치
범위가 '변수 > 리터럴' 인 경우 : OK
int i = 'A';
int > char, 'A' = 65long l = 123;
long > intdouble l = 3.14f;
double > float
범위가 '변수 < 리터럴' 인 경우 : Error
int i = 30_0000_0000;
int의 범위(대략 20억)를 넘습니다.long l = 3.14f;
long < floatlong(8bye), float(4byte)라 가능할 것 같지만 실수형은 정수형 보다 저장 범위가 훨씬 넓기 때문에 Error가 발생합니다.
float f = 3.14;
float < double;
byte, short 변수에 int 리터럴 저장 : OK
단, 변수의 타입의 범위 이내여야 합니다.
Ref. Java의 정석 기초편 Chapter2(3, 4)
Ref. 상수와 리터럴, 리터럴 타입과 접미사
Last updated