변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.
객체가 생성될 때 한 번만 할당 가능하지만, static이 없으므로 객체마다 별도의 값을 가질 수 있음.
package final1;
public class FinalLocalMain {
public static void main(String[] args) {
//final 지역 변수1
final int data1;
data1 = 10;
// data1 = 20; 컴파일 오류
//final 지역 변수2
final int data2 = 20;
// data2 = 10; 컴파일 오류
method(10);
}
static void method(final int parameter) {
//parameter = 20; 컴파일 오류
}
}
상수(constant)는 변수와 동일하게 데이터를 저장할 수 있는 공간이다.
하지만 한 번 메모리에 저장된 데이터를 변경할 수 없다.
변하지 않고, 항상 일정한 값을 갖는 수
클래스 로딩 시 한 번 초기화되며, 이후 변경할 수 없음.
public class Constants {
public static final int MAX_USERS = 100;
}
- 변경되지 않는 고정된 값을 저장할 목적으로 사용한다.
- 초기화 이후 값 대입 시 컴파일 에러를 발생시켜 값이 수정되지 못하도록 한다.
예) 수학 공식에 사용되는 수치, 프로그램의 기본적인 환경설정 정보(DB 정보, IP 주소정보 등)
- static final 키워드를 사용한다
- 대문자를 사용하고, 언더스코어로 구분 (변수와 상수 구분하기 위해)
- MY_VALUE
- 필드를 직접 접근해서 사용
- 상수는 고정된 값 자체를 사용하는게 목적
- 상수는 값을 변경할 수 없다. → 필드에 직접 접근해도 데이터가 변하는 문제 발생 x
/* 1. 상수 선언
* 상수 선언 시 자료형 앞에 final 키워드를 붙인다. */
final int AGE;
/* 2. 초기화 */
AGE = 20;
//AGE = 30; //한 번 초기화 한 이후 값을 재 대입하는 것은 불가능하다.
/* 3. 필요한 위치에 상수를 호출해서 사용한다. */
/* 3-1. 출력 구문에서 사용 */
System.out.println("AGE의 값 : " + AGE);
/* 3-2. 필요시 연산식에 호출해서 사용 */
System.out.println("AGE의 2배 : " + (AGE * 2));