본문 바로가기
Shorts

public static final

by sangyunpark99 2025. 4. 18.

static final

자바에서 static 변수는 클래스에 속한 변수로, 객체를 생성하지 않아도 클래스 이름만으로 접근할 수 있습니다. 프로그램이 실행되면 JVM의 메소드 영역에 로드되고, 프로그램이 종료될 때까지 유지됩니다. 이 때문에 전역에서 공유되는 값이나 설정값을 저장할 때 자주 사용됩니다.

여기에 final 키워드를 함께 쓰면, 해당 변수는 한 번만 초기화되고 그 이후에는 값을 변경할 수 없는 상수가 됩니다. 즉, static final전역 상수를 의미합니다.

 

public 키워드를 붙이는 이유

이는 보통 상수를 정의할 때 다른 클래스나 패키지에서도 접근 가능하게 하기 위함입니다.

예를 들어, 다음과 같은 선언은 자바에서 매우 일반적인 형태입니다.

public static final int TIMEOUT_SECONDS = 30;

 

이렇게 하면 TIMEOUT_SECONDS는 모든 클래스에서 사용할 수 있는 상수가 되며, 의미 있는 이름과 함께 코드의 가독성도 높일 수 있습니다.

 

interface에서 public static final 이 자동으로 붙는 이유

자바에서 인터페이스에 선언된 변수는 명시하지 않아도 자동으로 public static final이 붙습니다.

예를 들어 다음과 같은 코드를 작성하면,

interface Constants {
    int TIMEOUT = 30;
}

 

컴파일 시점에 내부적으로는 다음과 같이 처리됩니다.

public static final int TIMEOUT = 30;

 

이유는 인터페이스 자체가 추상적인 규약(계약)을 정의하는 구조이기 때문에, 인터페이스에 선언되는 변수도 해당 규약에 포함된 고정된 상수로 사용되기를 기대하기 때문입니다. 또한 인터페이스는 객체 생성이 불가능하므로, 변수도 반드시 static이어야만 접근이 가능합니다.

 

결국, 인터페이스의 변수는 모든 클래스에서 공통으로 사용되는 변경 불가능한 값이어야 하므로 public static final로 고정되는 것입니다.

 

 

정리

  • static은 클래스 레벨 변수로, 객체 없이 접근 가능하며 메모리에 한 번만 로드됩니다.
  • final은 값을 한 번만 설정할 수 있도록 하며, 변경을 방지합니다.
  • public은 다른 클래스나 패키지에서 자유롭게 사용할 수 있도록 허용합니다.
  • 따라서 public static final은 전역 상수를 선언할 때 가장 많이 쓰이는 패턴입니다.
  • 인터페이스에 선언된 변수는 자동으로 public static final이 붙으며, 이 역시 상수로 동작합니다.

 

면접 대비

public static final은 주로 상수를 선언할 때 사용하는 키워드 조합입니다.

static은 클래스 수준의 변수라는 의미로, 인스턴스를 생성하지 않고도 클래스 이름으로 접근할 수 있습니다.final은 값이 한 번 초기화되면 변경할 수 없도록 만듭니다. 즉, 불변성을 갖는 변수입니다. public은 다른 클래스에서도 접근할 수 있도록 범위를 공개하는 접근 제어자입니다. 따라서 public static final전역에서 접근 가능한 상수를 정의할 때 사용되며, 의미 있는 이름을 가진 고정값을 코드 곳곳에서 재사용할 수 있게 해줍니다. 

 

또한, 인터페이스에서 선언한 변수는 명시하지 않아도 자동으로 public static final이 붙습니다. 이는 인터페이스가 구현체 간의 공통 규약을 정의하는 구조이기 때문에, 그 안에 선언되는 값들도 변하지 않는 상수로 고정되는 것이 자연스럽기 때문입니다.

'Shorts' 카테고리의 다른 글

MySQL에서 사용되는 B+Tree  (0) 2025.05.28
G1GC의 변경된 GC 구조  (0) 2025.04.18
String Costant Pool  (0) 2025.04.18