우리는 지금까지 변수를 정의해 왔습니다. y = 7x + 3. 이 식은 x, y와 같이 변할 수 있는 변수도 존재하지만 7,3과 같이 변할 수 없는 '상수'도 존재합니다. Java에서도 마찬가지로 '상수'가 있습니다.

상수에는 두 가지가 존재합니다.

1) 리터럴(literal) 상수 : 이름이 없는 상수

2) 심볼릭(symbolic) 상수 : 이름이 있는 상수

 

1. 리터럴 상수


literal의 사전적 의미는 1) 글자 그대로의 2) 문자의  입니다. 말 그대로 상수라는 겁니다.

int add = 3+5;

 

위의 add라는 변수를 정의하고 거기에 3+5의 결과값을 담으려고 합니다. 그렇다면 3과 5는 중앙처리장치(CPU)에 의해 연산이 되어 그 결과값 8이 add에 담겨야 합니다. 하지만 3과 5를 연산하려면 그 수를 메모리에 담아두고 연산을 하여 결과값을 add라는 이름을 붙인 메모리에 char 타입으로 저장을 시킵니다. 하지만 3과 5는 메모리에 담길 때, 이름이 붙지 않습니다. 그래서 리터럴상수라고 부르는 것입니다. 말 그대로 리터럴 상수는 메모리에 담기는 데이터 그 자체입니다. 정수, 실수, 문자, 문자열 모두 리터럴상수입니다.

 

우리는 여기서 한 가지 의문을 가져야 합니다. 3과 5는 일단 메모리에 담겨서 연산이 된다고? 그렇다면 어떤 자료형으로 담기지?'

정수는 기본적으로 int형, 실수는 double형으로 저장합니다. int, double로 표현할 수 없는 정수, 실수는 더 큰 자료형으로 저장됩니다.

 

 

 

2. 심볼릭 상수


'심볼릭 상수'는 직접 final로 선언한 상수입니다. 심볼릭 상수는 한 번 정의하면 값의 변경이 불가능합니다. 이후의 값이 바뀌지 말아야 하는 경우 심볼릭 상수를 쓰는 것입니다.

package hello;

public class HelloJava{
    public static void main(String[] args){
        final int num1 = 10;
        final double num2 = 12345678900L; //int 범위 넘어서므로 L을 붙여준다.

        final double num3 = 3.14;
        final float num4 = 3.14f;

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
        System.out.println(num4);
    }
}

 

일반적인 변수를 선언할 때와 다르게 final 선언자를 붙입니다. 그리고 상수는 대문자로 표현하는 것이 관례입니다.

상수는 선언한 뒤에 값의 변경이  불가능합니다.

가령 계산기 프로그램에서 원주율 PI 같은 고정된  값을 정의할 때 심볼릭  상수를 사용합니다.

리터럴에 대해서는 변수에 저장하거나 연산을 하기 전 일단 '메모리에 담기는 데이터 자체' 정도로 이해하고 사용하는 것만으로 충분합니다.

'프로그래밍 언어 > Java' 카테고리의 다른 글

(Java) 6 - 연산자  (0) 2020.05.17
(Java) 5 - 자료형(3) - 형 변환  (0) 2020.05.17
(Java) 3 - 자료형(1) - 정수와 실수  (0) 2020.05.17
(Java) 2 - 변수와 자료형  (0) 2020.05.17
(Java) 1 - Java의 특징  (0) 2020.05.17

+ Recent posts