final 예약어를 사용해서 선언한다.
ex) public final static int MAX_VALUE = 100; -> 숫자 상수 MAX_VALUE public final static String MEMBER_BOARD = "M"; -> 문자 상수 MEMBER_BOARD
상수의 이름은 모두 대문자로 하며, 1개 이상의 단어로 이루어진 경우 "_"로 구분한다.
ex) MAX_VALUE, MEMBER_BOARD
상수를 선언하고 초기화했을 경우, 그 값을 변경하면 안된다.
ex) final int MAX_VALUE = 100; MAX_VALUE = 0; -> 위에 선언 후 초기화를 했기 때문에 사용할 수 없다.
상수를 선언만 했을 경우 사용하기 전에 초기화를 꼭 해주어야 한다.
예를 들어 'A', 65, 3.14 와 같은 문자와 숫자를 리터럴 혹은 리터럴 상수라고 한다.
리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수풀(constant pool)에 놓인다.
ex) int i = 10; 숫자 10이 메모리 공간 어딘가에 존재해야 변수 i에 그 값을 초기화 할 수 있기 때문에 일단 숫자값이 어딘가 메모리(상수풀)에 놓여있고, 이 값이 변수 i에 초기화될 수 있는 것이다.
참고로 문자열 리터럴의 경우 객체화된 문자열과 비교해서 생각을 해야한다.