코린이의 소소한 공부노트

변수, 상수(constant), 리터럴(literal), 접미사 본문

Java

변수, 상수(constant), 리터럴(literal), 접미사

무지맘 2021. 12. 7. 00:38

1. 변수는 하나의 값을 저장하기 위한 기억공간이다.

2021.12.03 - [Java] - 변수(variable)에 설명한 바 있다.

 

2. 리터럴은 그 자체로 값을 의미하는 것을 말한다.

아래는 리터럴이 무엇인지 이해하기 위한 예시 코드이다.

// 우변이 리터럴인 경우
int money = 10000;
char mathScore = 'A';

// 우변이 변수인 경우
int wallet = money;
char sciScore = mathScore;

첫 번째, 우변이 리터럴인 경우를 먼저 본다면

 - int 타입의 money라는 변수를 만들어서 그 안에 10,000을 저장했다. 여기서 money는 변수이고 10,000은 정수 리터럴이다. 10,000은 이 자체로 만을 뜻한다.

 - char 타입의 mathScore라는 변수를 만들어서 그 안에 'A'를 저장했다. 여기서 mathScore는 변수이고 'A'은 문자 리터럴이다. 'A'는 이 자체로 알파벳 첫 번째 문자의 대문자 'A'를 뜻한다.

두 번째, 우변이 변수인 경우를 보면

 - int 타입의 wallet이라는 변수를 만들어서 그 안에 money를 저장했다. 여기서 wallet은 변수이고 money라는 글자를 그대로 저장한 것이 아니다. money는 정수 리터럴이 아닌 변수이기 때문에 wallet에 저장되는 건 money에 저장된 값인 10,000이다.

 - char 타입의 sciScore라는 변수를 만들어서 그 안에 mathScore를 저장했다. 여기서 sciScore는 변수이고 mathScore라는 글자를 그대로 저장한 것이 아니다. mathScore는 문자 리터럴이 아닌 변수이기 때문에 sciScore에 저장되는 건 mathScore에 저장된 값인 'A'이다.

 

3. 상수는 하나의 값을 한 번만 저장할 수 있는 기억공간이다.

final 키워드를 이용해서 상수를 선언할 수 있다. 이때 명명규칙 권장사항을 따라 변수 이름을 대문자로 쓴다.

final int MAX_NUM = 255;
MAX_NUM = 100; // 에러 발생

상수는 값을 한 번만 저장할 수 있는 변수이기 때문에, 일단 한번 값을 저장하면 그 내용을 바꿀 수 없다. 그래서 두 번째 줄처럼 값을 바꾸려고 하면 에러가 발생한다.

 

4. 접미사는 리터럴 뒤에 붙여 타입을 나타내는 것을 말한다. 대소문자를 구분하지 않는다.

1) 정수형: int가 default type - int의 리터럴은 정수

 - byte, short: int의 리터럴을 사용하고, 계산의 편의를 위해 int로 변환돼서인지 접미사는 없다.

 - long: int의 리터럴을 사용하고, 접미사는 L을 쓴다. L은 생략이 가능하고, 숫자가 너무 크면 '_'를 이용해서 가독성을 올릴 수 있다.

// 정수형
byte b = 127; // byte로 표현 가능한 최댓값
short s = 32767 // short으로 표현 가능한 최댓값
int i = 1;
long l = 1_000_000_000l; // _의 위치는 상관 없음
long l = 10_0000_0000l; // 윗줄과 같은 코드

 - int에는 접두사도 있다. 접두사가 무엇이냐에 따라 같아 보이는 리터럴도 다른 값을 표현할 수 있다.

  - 0(영): 8진수 / 0x(영엑스): 16진수 / 0b(영비): 이진 접두사

// 100이라는 같은 리터럴로 저장했을 때 10진수 값을 확인해보자.

// 8진수: 맨 뒷자리부터 자리 값이 1, 8, 8^2, ...
int oct = 0100; // 10진수로 표현하면 8^2 = 64

// 16진수: 맨 뒷자리부터 자리 값이 1, 16, 16^2, ...
int hex = 0x100; // 10진수로 표현하면 16^2 = 256

// 2진수: 맨 뒷자리부터 자리 값이 1, 2, 2^2, ...
int bin = 0b100; // 10진수로 표현하면 2^2 = 4

2) 실수형: double이 default type - double의 리터럴은 실수

 - double: 소수점을 사용하고 접미사는 d를 쓴다. 소수점(정수일 경우)과 d는 생략 가능하다.

 - float: double의 리터럴을 사용하고, 접미사는 f를 쓴다. f는 생략 불가능하다.

// 실수형
float f = 3.14f;
double d = 3.14d;

f = 2.7; // 에러 발생 - 접미사 생략 불가
d = 2.7; // 에러X - 접미사 생략 가능

헷갈릴 수 있는 예시들을 보면서 해당 리터럴이 왜 이런 값을 나타내는지 생각해보자.

[그림 004] 실수 리터럴이 나타내는 값

'Java' 카테고리의 다른 글

문자와 문자열  (0) 2021.12.08
변수와 리터럴의 타입 일치/불일치  (0) 2021.12.08
변수 선언 & 명명 규칙  (0) 2021.12.06
변수의 데이터 타입(data type)  (0) 2021.12.06
변수(variable)  (0) 2021.12.03