Language/JAVA

[JAVA] final 필드와 상수

IT수정 2024. 9. 4. 14:59

인스턴스 필드와 정적 필드는 언제든지 값을 변경할 수 있다. 그러나 경우에 따라서는 값을 변경하는 것을 막고 읽기만 허용해야 할 때가 있다. 이때 final 필드와 상수를 선언해서 사용한다.

 

final 필드 선언

final은 최종적이라는 뜻을 가지고 있다. final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 된다. final 필드는 다음과 같이 선언한다.

final 타입 필드 [=초기값];

 

final 필드에 초기값을 줄 수 있는 방법은 다음 두 가지 밖에 없다.

  • 필드 선언 시에 초기값 대입
  • 생성자에서 초기값 대입

고정된 값이라면 필드 선언 시에 주는 것이 가장 간단하다. 하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부에서 전달된 값으로 초기화한다면 생성자에서 해야 한다. 이 두 방법을 사용하지 않고 final 필드를 그대로 남겨 두면 컴파일 에러가 발생한다.

 

상수 선언

우리 주변에는 불변의 값이 있다. 불변의 값은 수학에서 사용하는 원주율이나 지구의 무게 및 둘레 등이 해당된다. 이런 불변의 값을 저장하는 필드를 자바에서는 상수(Constant)라고 부른다. 상수는 객체마다 저장할 필요가 없고, 여러 개의 값을 가져도 안되기 때문에 static 이면서 final인 특성을 가져야 한다.

static final 타입 상수 [= 초기값];

 

초기값은 선언 시에 주는 것이 일반적이지만, 복잡한 초기화가 필요한 경우에는 정적 블록에서 초기화 할 수도 있다.

static final 타입 상수;
static {
	상수 = 초기값;
    }

 

상수 이름은 모두 대문자로 작성하고, 서로 다른 단어가 혼합되었다면 언더바(_)로 단어들을 연결한다. 또한 상수는 정적 필드이므로 클래스로 접근해서 읽을 수 있다.

static final PI = 3.14159;

 

'Language > JAVA' 카테고리의 다른 글

[JAVA] import 문  (0) 2024.09.04
[JAVA] 패키지  (0) 2024.09.04
[JAVA] 인스턴스 멤버와 정적 멤버  (0) 2024.09.04
[JAVA] 메서드  (0) 2024.09.04
[JAVA] 생성자  (2) 2024.09.04