- 이전 강좌까지는 변수와 그 변수의 특성을 나타내는 자료형에 대해 이야기했습니다.
- 수학에서 변수는 변할지도 모르는 수를 의미합니다.
- 근데 모든 값이 항상 변할지도 모르는 것은 아닙니다.
- 원주율 같은 경우는 우리가 죽을 때까지 3.14로 변하지 않을 겁니다.
- 이렇게 프로그램 상에서 절대 바뀌지 않을 수를 상수(Constant)라고 합니다.
- 그래서 이번 강좌에서는 상수를 배워보도록 하겠습니다.
1. 상수(Constant)
- 자바에서 상수는 final이라는 키워드를 앞에 붙여서 사용합니다.
- 상수 이름은 전부 대문자로 주료 사용하고, 여러 단어를 연결하는 경우에 _ 기호를 사용하는 것이 관례입니다.
1) 상수선언 문법
final 자료형 상수명 = 값;
ex)
final int MAX_NUM = 10;
- 변수 작성하듯이 작성하고 앞에 final을 붙여줍니다.
- 이제 예제를 실습해 보겠습니다.
- 패키지(ch08_constant)과 클래스(Ex01_Constant.java)를 추가해 주세요.
- 기초적 작업을 모르는 분은 아래 주소를 클릭하고 보고 오세요.
https://ossam5.tistory.com/613
## 상수 선언 실습1 - Ex01_Constant.java
package ch08_constant;
public class Ex01_Constant {
public static void main(String[] args) {
//선언과 동시에 초기화
final int MAX_NUM = 100;
//선언만 처리
final int MIN_NUM;
//추후에 값을 대입
MIN_NUM = 0;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
}
}
- 두개의 상수를 선언하고, MAX_NUM은 초기화하여 바로 값을 대입했습니다.
- MIN_NUM은 추후에 값을 대입했습니다.
- 하지만 사용 전에 값을 대입하지 않으면 오류가 납니다.
- 값을 반드시 대입해야 합니다.
- 그림을 보면 추후에 값을 대입한 MIN_NUM 앞에 주석을 달았습니다.
- 그랬더니 에러가 발생되는 것이 보입니다.
## 상수 선언 실습2 - Ex01_Constant.java
- 이번에는 상수인데 값을 추가대입해 보겠습니다.
package ch08_constant;
public class Ex01_Constant {
public static void main(String[] args) {
//선언과 동시에 초기화
final int MAX_NUM = 100;
//선언만 처리
final int MIN_NUM;
//추후에 값을 대입
MIN_NUM = 0;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
//MAX_NUM = 10000;
}
}
- 코드 마지막 부분에 [ MAX_NUM = 10000; ] 를 추가했습니다.
- 그러면 에러가 떠서 앞에 //로 주석을 달아뒀습니다.
- 주석을 없애면 위의 그림과 같이 에러가 뜨는 것을 확인할 수 있습니다.
- 상수는 한번 값을 대입하면 추후에 값을 변경하면 안 됩니다.
- 절대적으로 변하지 않을 값을 대입한다고 보면 좋습니다.
- 상수는 프로그램 내부에서 자주 사용은 하지만, 초기값을 대입 후에 절대적으로 변하지 않는 값에 주면 좋습니다.
2. 리터럴(Literal)
- 리터럴은 프로그램에서 사용하는 모든 숫자, 문자, 논리값 등을 일컫는 말입니다.
- 변수나 상수에 대입되는 일반적인 자료형 값이라고 보면 됩니다.
- 리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓이게 됩니다.
- 예를 들어 num이라는 변수에 정수인 10이 대입이 된다고 보겠습니다.
- 10이라는 리터럴은 로딩될 때 상수풀에 놓이게 되고, 메모리 공간에 존재해야 num이 가져다 쓸 수 있는 구조로 되어 있습니다.
- 일단 숫자 값이 어딘가 메모리에 쓰여 있고, 이 값이 다시 변수 메모리에 복사가 되는 것을 의미합니다.
'컴퓨터언어 > JAVA(자바)' 카테고리의 다른 글
[JAVA강좌] 10강 연산자 개념과 산술연산자 (0) | 2024.01.05 |
---|---|
[JAVA강좌] 9강 자료 형변환 (0) | 2024.01.04 |
[JAVA강좌] 7강 자료형 없이 선언 - var - 자바10부터 생긴 문법 (0) | 2024.01.02 |
[JAVA강좌] 6강 참조형변수 - String(문자열) (0) | 2023.12.28 |
[JAVA강좌] 5강 기본자료형 - 논리관련 - boolean (0) | 2023.12.27 |