1. final (상수화)
final 키워드는 "마지막"이라는 뜻입니다. 변수, 메서드, 클래스에 붙어 변경을 금지합니다.
- 변수 앞: 한 번 값을 넣으면 다른 값으로 바꿀 수 없습니다. (재할당 금지)
- 메서드 앞: 자식 클래스에서 이 메서드를 재정의(Overriding) 할 수 없습니다.
- 클래스 앞: 다른 클래스가 이 클래스를 상속(Inheritance) 할 수 없습니다.
- 핵심: "객체마다 값은 다를 수 있지만(예: 학번), 한 번 정해지면 끝까지 간다!
2. static (공유)
static 키워드는 객체(인스턴스)가 아닌 클래스 자체에 고정시키는 역할을 합니다.
- 메모리 효율: 객체를 생성(new)할 때마다 메모리에 새로 만드는 게 아니라, 딱 한 번만 만들어놓고 모든 객체가 공유해서 사용합니다.
- 사용 방법: 객체를 만들지 않고도 클래스명.변수명으로 바로 사용할 수 있습니다.
- 핵심: "모든 객체가 공통적으로 가져야 할 성질(예: 학교 이름)에 사용한다!"
3. static final (절대 변하지않은 상수)
static과 final이 만났습니다. 자바에서 진정한 의미의 상수를 만들 때 사용합니다.
- 특징: 모든 객체가 공유(static)하면서, 절대로 그 값을 바꿀 수도 없는(final) 상태입니다.
- 관례: 변수명은 모두 대문자로 쓰고, 단어 사이는 언더바(_)로 구분하는 것이 국룰입니다.
- 예시: MIN_AGE, PI, MAX_STOCK 등
| 구분 | final | static | static final |
| 의미 | 값 변경 불가 | 클래스 레벨에서 공유 | 공용 상수 (공유 + 변경불가) |
| 메모리 | 객체마다 생김 (Heap) | 클래스당 하나 (Method) | 클래스당 하나 (Method) |
| 값의 특징 | 객체마다 다를 수 있음 | 객체마다 동일함 | 객체마다 동일함 |
| 수정 가능 | X | O (공유값이 바뀜) | X |
'개발 공부 > Java-Spring' 카테고리의 다른 글
| 스프링 부트 6개 도메인 통합 테스트 구축기: 인프라 격리부터 영속성 타이밍 버그 검거까지 (0) | 2026.05.27 |
|---|---|
| [JPA] 엔티티의 생명주기 3단계 (0) | 2026.05.10 |
| Spring의 핵심, IoC와 DI: 제어의 역전과 의존성 주입 완벽 가이드 (0) | 2026.01.23 |
| 자바 접근 제어자및 스프링부트에서 사용예시 (0) | 2026.01.20 |
| [JPA] N+1 문제, 원인과 결과로 완벽하게 이해하기 (0) | 2026.01.20 |