Language

[Java] 상수(Constants)

Jintiago 2022. 3. 7. 20:18

상수는 값이 변하지 않는 수를 의미한다.

그러나 자바에서는 한번 그 값이 정해지면 이후로는 변경이 불가능한 변수도 상수라 일컫는다.

 

1. 일반적 상수

변수 선언 시 앞에 final 추가하면 그 변수는 상수가 되며, 다음과 같은 특성 지니게 됨

1) 값을 한 번만 할당할 수 있다.

2) 한 번 할당된 값은 변경이 불가하다.

 

상수 선언과 값 할당
실행 결과

 

상수에 다시 값을 할당하자 오류가 발생한다.

 

# 참고 : 상수의 이름은 모두 대문자로 짓는 것이 관례이며, 띄어쓰기는 언더바(_)를 넣는다.

 

 

2. Literal 상수

int num = 123; // 숫자 123은 리터럴 상수(혹은 그냥 '리터럴' or '상수')

컴파일러는 숫자 123을 항상 int형 정수로 인식한다.

 

이는 num을 int로 선언했기 때문일까? 결론부터 말하자면 아니다.

 

숫자 1111111111은 int형 정수로만 인식될 수 있는데, 값이 너무 크기 때문에 오류가 발생한다.

그럼 이렇게 범위를 넘어서는 큰 값은 어떻게 표현할까?

위와 같이 정수를 할당할 때 끝에 long 형임을 나타내는 'L'을 붙여주면 오류 없이 정상 작동한다.

 

3. 정수형 상수 표현

정수는 8진수, 10진수, 16진수로 나타낼 수 있다.

 

8진수 : 숫자 앞에 0 삽입하여 표현

16진수 : 숫자 앞에 0x 혹은 0X 삽입하여 표현

10진수는 누구나 알고 있으니 넘어가겠다.

 

8진수와 16진수의 표현

 

 

Java는 byte, short 형의 정수 표현 방법을 제공하지 않는다.

즉, 다음과 같은 덧셈을 진행할 때 이는 항상 int로 인식되고 int로 덧셈이 이루어진다.

 

System.out.println(1 + 2 + 3);

 

하지만 아래와 같은 초기화는 허용한다.

 

byte num1 = 1;

short num2 = 10;

 

 

3. 정수형 상수 관련 추가 기능

 

1) 2진수 표현 가능

int eight = 0B1000;

 

2) 중간 언더바 삽입 가능

int num = 1000_0000_0000;

넣고 싶은 곳에 얼마든지 가능하다.

큰 수의 단위 인식을 편리하게 할 때 이용할 수 있다. 

 

 

4. 실수형 상수

실수형 상수는 기본적으로 double 형으로 인식된다.

 

double a = 1.2345; // 1.2345는 실수형 상수

 

두 double 형 실수의 덧셈 결과

두 실수가 double로 표현된 상수임을 명시하고 싶다면

이렇게 뒤에 D혹은 d를 붙일 수 있다.

 

마찬가지로 float 임을 표시하고 싶다면 뒤에 F 혹은 f를 붙이면 된다.

오차 발생

5.0000222가 아닌 5.0000224가 출력되었다.

> 위 두 실수는 float 형의 정밀도로 계산하기에는 적절치 않기 때문

 

ex) 1.2e3 -> 1.2x10^3

ex) 1.2e-3 -> 1.2x10^-3

 

위와 같이 e를 이용해서 표현할 수도 있다. 물론 이들도 double이다.

double이나 float임을 표시하기 위해 뒤에 d 혹은 f 등을 붙일 수도 있다.

 

ex) 1.2e3f

 

앞 또는 뒤에 붙은 숫자 0을 생략할 수도 있다.

 

ex) 1.0 -> 1.

0.22 -> .22

0.7f -> .7f

10.0f -> 10.f

 

5. 부울형 상수와 문자형 상수

 

boolean형이 가질 수 있는 값은 true, false 두 가지이고, 이들이 boolean형 상수의 전부다.

문자형 상수는 'a', 'b', '가', '나' 등으로 표현한다.

 

이외에 escape sequence 라는 것이 존재하는데, 이는 Unicode 문자 중 키보드로 입력하기 어려운 문자의 표현을 위한 것이다.

 

'\b' : backspace

'\t' : tap

'\\' : backslash

'\'' : 작은따옴표

'\"' : 큰따옴표

'\n' : 행 나누기

'\r' : carriage return(커서를 왼쪽 끝으로 이동시킴)

 

예제)

실행결과

\r 의 경우, 커서가 왼쪽 끝, 즉 A 위치로 이동한 뒤 다음 문자열을 출력하므로 위와 같은 결과가 나타난다.

 

예제)

"오늘의 환율은 1$에 0.92€ 입니다." 를 출력해보자.

​유로 기호 표시는 키보드에 존재하지 않는다. 이 때에는 유니코드 값을 16진수로 \u뒤에 덧붙이면 해당 문자가 출력된다.