JAVA

static, final, static final

청춘고양이 2024. 6. 28. 15:58
반응형

1. static 키워드

static 키워드는 클래스 멤버를 지정할 때 사용됩니다. 클래스가 로드될 때 메모리에 한 번 할당되며, 모든 인스턴스가 공유하는 변수나 메서드에 사용됩니다. 이는 다음과 같은 특성을 가집니다:

  • 클래스 변수: 클래스의 모든 인스턴스들이 공유하는 변수로, 클래스가 로드될 때 초기화됩니다.
  • 스태틱 메서드: 인스턴스 생성 없이도 호출할 수 있는 메서드입니다.
public class MyClass {
    public static int staticVariable = 10;
    public static void staticMethod() {
        System.out.println("This is a static method.");
    }
}

2. final 키워드

final 키워드는 변수, 메서드, 클래스에 적용될 수 있습니다. 이 키워드를 사용하면 해당 요소가 초기화 이후 변경될 수 없습니다.

  • 변수: 변수가 상수가 되어 초기화 이후 값이 변경되지 않습니다.
  • 메서드: 메서드가 오버라이드될 수 없으며, 하위 클래스에서 변경할 수 없습니다.
  • 클래스: 클래스가 상속될 수 없으며, final 클래스의 메서드 역시 오버라이드될 수 없습니다.
public class MyConstants {
    public static final double PI = 3.14159;
    public static final String APP_NAME = "MyApp";
    public static final int MAX_COUNT;

    static {
        MAX_COUNT = 100;
    }
}

3. static final 키워드

static final 키워드는 상수를 정의할 때 사용됩니다. 이는 한 번 할당된 후 변경되지 않는 값으로, 주로 상수를 정의하는 데 활용됩니다. 클래스가 로드될 때 초기화되며, 해당 클래스의 모든 인스턴스들이 공유합니다.

public class Configuration {
    public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/mydatabase";
    public static final int MAX_CONNECTIONS = 10;
    public static final String VERSION;

    static {
        VERSION = "1.0.0";
    }
}

4. static final 사용 사례

  • 상수 정의: 프로그램 내에서 변경되지 않는 값을 정의할 때 사용됩니다.
  • 설정 값: 설정 파일 경로, 데이터베이스 URL 등 프로그램 구성 요소에 대한 상수를 정의할 때 유용합니다.
  • 플래그 값: 특정 조건을 나타내는 상수를 정의할 때 활용됩니다.

5. 주의할 점

  • 명명 규칙: static final 상수는 대문자와 언더스코어(_)를 사용하여 명명해야 합니다. 예를 들어 MAX_CONNECTIONS, DATABASE_URL 등이 좋은 예시입니다.
  • 멀티스레드 환경: static final 상수는 변경되지 않는 값이므로 스레드 안전성을 고려할 필요가 없습니다.
반응형