우리는 지금까지 변수를 정의해 왔습니다. 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 |