잡동사니에도 사랑을

Java 정리 - 필드와 상수 본문

정리/Java정리

Java 정리 - 필드와 상수

luvforjunk 2021. 9. 12. 20:41
728x90
반응형

final 필드와 상수

fianl 필드는 최종적인 필드란 뜻으로, final 필드는 저장된 초기값이 최종값이므로, 수정할 수 없다.

fianl필드의 초기값을 줄 수 있는 방법은 딱 두가지이다.
첫 번째는 필드 선언 시에 주는 방법이고, 두 번째는 생성자에서 주는 방법이다. 단순 값이라면 필드 선언 시에 주는 것이 제일 간단하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화해야 한다면 생성자에서 초기값을 지정해야 한다. 생성자는 final 필드의 최종 초기화를 마쳐야 하는데, 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다.

ex)

public class Person {
   final String nation = "Korea";
   final String kor;
   String name;

public Person(String kor, String name) {
   this.kor = kor;
   this.name = name;
}
}

(설명) kor 필드는 한번 값이 저장되면 변경할 수 없도록 final 필드로 선언했다. 하지만 kor은 Person객체가 생성될 때 부여되므로 Person클래스 설계 시 초기값을 미리 줄 수 없다. 그래서 생성자 매개값으로 kor을 받아서 초기값으로 지정해주었다. 반면, nation은 항상 고정된 값을 갖기 때문에 필드 선언 시 초기값으로 "Korea"를 주었다.

상수

불변의 값을 상수(static final)이라고 한다
그렇담 final필드는 한번 초기화되면 수정할 수 없는 필드라고 했는데, final필드를 상수라고 불러야 할까? 불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있으며, 여러 값으로 초기화될 수 없기 때문에 final필드를 상수라고 부르진 않는다. 상수는 static이면서 final이어야 하는데, static final 필드는 객체마다 존재하지 않고 클래스에만 존재한다. 또한, 한 번 초기값이 저장되면 변경할 수 없다.

728x90
반응형

'정리 > Java정리' 카테고리의 다른 글

Java정리 - java_ee  (0) 2021.10.12
Java 정리 - SingleTon  (0) 2021.09.12
Java 정리 - Layout  (0) 2021.09.12