더북(TheBook)

2.4.2 정적 상수


변경 가능한 정적 변수는 드물지만, 정적 상수(static final 변수)는 아주 일반적이다. 예를 들어 Math 클래스는 다음 정적 상수를 선언한다. 프로그램에서는 이 상수를 Math.PI로 접근한다.

public class Math {

    ...

    public static final double PI = 3.14159265358979323846;

    ...

}


static 키워드가 없으면 PIMath 클래스의 인스턴스 변수가 된다. 즉, PI에 접근하려면 Math 클래스의 객체가 필요하며, 모든 Math 객체는 자체적으로 PI의 사본을 가지고 있어야 한다.

다음은 숫자가 아니라 객체를 담는 정적 final 변수의 예다. 난수가 필요할 때마다 새 난수 발생기를 생성하는 방법은 쓸모가 없고 안전하지도 못하다. 이보다는 클래스의 모든 인스턴스에서 난수 발생기를 하나 공유하는 방법이 더 낫다.

public class Employee {

    private static final Random generator = new Random();

    private int id;

    ...

    public Employee() {

        id = 1 + generator.nextInt(1_000_000);

    }

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.