Java에서는 final이 중요한 키워드지만, const는 거의 사용되지 않습니다. final과 const의 개념을 비교하면서 왜 그런지 설명해줄게.
final의 역할Java에서 final은 값 변경을 방지하는 역할을 한다. 선언 위치에 따라 의미가 달라진다.
변수에 사용 → 해당 변수는 한 번만 초기화할 수 있음.
final int a = 10;
a = 20; // 컴파일 오류 발생 (값 변경 불가)
객체 참조에 사용 → 객체 자체의 참조 변경 불가, 하지만 객체 내부의 속성은 변경 가능.
final List<String> list = new ArrayList<>();
list.add("Hello"); // 가능
list = new ArrayList<>(); // 불가능 (컴파일 오류)
메서드에 사용 → 오버라이딩 불가.
class Parent {
final void show() {
System.out.println("Hello");
}
}
class Child extends Parent {
// void show() { System.out.println("World"); } // 컴파일 오류
}
클래스에 사용 → 상속 불가.
final class Car { }
class SportsCar extends Car { } // 컴파일 오류
const는 왜 거의 사용되지 않나?Java에는 const 키워드가 존재하지만, 예약어로만 존재하며 실질적으로 사용할 수 없다. (C++/JavaScript처럼 const로 변수를 선언할 수 없음.)
Java에서 const의 역할은 static final을 사용하면 대체할 수 있다.
class Constants {
static final double PI = 3.14159;
}
이렇게 하면 Constants.PI는 상수(constant)처럼 동작하며, 클래스가 로드될 때 한 번만 초기화된다.
final은 Java에서 필수적으로 쓰이는 키워드이며, 변수/메서드/클래스에서 변경을 방지하는 역할을 함.const는 Java에서 사용할 수 없는 예약어이며, 대신 final 또는 static final을 사용하면 동일한 효과를 얻을 수 있음.static final을 사용하여 선언하는 것이 일반적임.즉, Java에서 final은 중요하지만 const는 신경 쓸 필요 없음.