반응형
✅ final 키워드 (상수화 개념)
- 변수에 사용하면: 값이 한 번만 할당될 수 있다는 뜻입니다.
- 메서드에 사용하면: 해당 메서드를 오버라이딩(재정의) 할 수 없습니다.
- 클래스에 사용하면: 그 클래스를 상속할 수 없습니다.
예시:
final int x = 10;
x = 20; // 컴파일 에러! final 변수는 값 변경 불가
✅ static 키워드 (공유 개념, 객체생성x)
- 클래스에 속한 공용 자원을 만들 때 사용합니다.
- 인스턴스를 생성하지 않아도 접근할 수 있어요.
예시:
static int count = 0;
public static void main(String[] args) {
System.out.println(count); // 객체 없이도 사용 가능
}
✅ static final (공유하는 상수의미)
- 이 조합은 **"값이 한 번만 설정되는 클래스 수준 상수"**를 의미합니다.
- 대부분 상수(Constant) 를 정의할 때 사용합니다.
예시:
public class Constants {
public static final double PI = 3.14159;
}
- PI는 클래스 전체에서 사용할 수 있고, 변경 불가능합니다.
- static이므로 객체 없이 접근 가능하고, final이므로 값 변경 불가.
✅ 요약 비교
| 키워드 | 의미 | 객체 필요 여부 | 값 변경 |
| final | 한 번만 할당 가능 | 필요함 | ❌ 변경 불가 |
| static | 클래스 수준 공유 | 필요 없음 | ✅ 변경 가능 |
| static final | 클래스 수준 상수 (공유 + 변경 불가) | 필요 없음 | ❌ 변경 불가 |
필요에 따라 사용하는 목적이 달라요:
- final → 값 변경 금지
- static → 공유 자원
- static final → 불변의 공유 자원 (ex. 상수)
반응형
'언어 > java' 카테고리의 다른 글
| [java] 람다식, 메소드 참조 (0) | 2025.09.11 |
|---|---|
| [java] 다형성 (0) | 2025.09.09 |
| [java] 열거형 타입 enum (0) | 2025.09.06 |
| [java] Map-HashMap, LinkedHashMap, TreeMap (0) | 2025.05.02 |
| [java] Set-HashSet, LinkedHashSet, TreeSet (0) | 2025.05.02 |