[JAVA] final과 상수

min 🎸·2025년 1월 22일

🤔 final 키워드란 ?

변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.

객체가 생성될 때 한 번만 할당 가능하지만, static이 없으므로 객체마다 별도의 값을 가질 수 있음.

  • final 을 지역 변수에 설정할 경우 → 최초 한번만 할당할 수 있다.
    • 이후에 변수의 값을 변경하려고 하면 컴파일 오류
  • final 을 지역 변수 선언 시 바로 초기화 한 경우 → 값을 재할당할 수 없다.
  • 매개 변수에 final이 붙으면 메서드 내부에서 값을 변경할 수 없다.
    • 메서드 호출 시점에 사용된 값이 끝까지 사용됨.
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; 컴파일 오류
    }
}

🤔 상수란 ?

static final이 붙은 변수

상수(constant)는 변수와 동일하게 데이터를 저장할 수 있는 공간이다.
하지만 한 번 메모리에 저장된 데이터를 변경할 수 없다.
변하지 않고, 항상 일정한 값을 갖는 수


클래스 로딩 시 한 번 초기화되며, 이후 변경할 수 없음.

public class Constants {
    public static final int MAX_USERS = 100;
}

상수를 사용하는 이유

  1. 변경되지 않는 고정된 값을 저장할 목적으로 사용한다.
  2. 초기화 이후 값 대입 시 컴파일 에러를 발생시켜 값이 수정되지 못하도록 한다.
    예) 수학 공식에 사용되는 수치, 프로그램의 기본적인 환경설정 정보(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));

0개의 댓글