본문으로 바로가기

[Java] 상수 (final 필드)

category Backend/객체 지향 프로그래밍 2022. 4. 12. 13:19

1. final 필드

final 타입 필드 [= 초기값];
  • final는 최종적이라는 뜻
  • final 필드는 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없습니다.
  • 초기화되지 않은 final 필드를 그대로 두면 컴파일 에러가 발생

 

final 필드 초기화 방법

1) 필드 선언 시 초기화

public class Computer {
    // 필드 선언 시 초기화
    final String modelName = "Mac Book Air M1";
    final long serial = 1432;
    final CPU cpu = new CPU();
}

 

2) 생성자에서 초기화

public class Computer {

    final String modelName;
    final long serial;
    final CPU cpu;

    // 생성자에서 초기화
    public Computer(String modelName, long serial, CPU cpu) {
        this.modelName = modelName;
        this.serial = serial;
        this.cpu = cpu;
    }
}

 

2. 상수

static final 타입 상수 [= 초기값];
  • 상수는 불변의 값
  • final 필드는 객체마다 저장되고, 생성자의 매개 값을 통해서 여러 가지 값을 가질 수 있기 때문에 상수가 될 수 없습니다. 
  • 초기값이 단순 값이라면 선언 시에 값을 주는 것이 일반적이지만, 복잡한 초기화일 경우 정적 블록에서도 초기화할 수 있습니다.
  • 상수 이름은 모두 대분자로 작성하는 것이 관례이고 서로 다른 단어가 혼합된 이름이라면 _로 단어들을 연결 해줍니다.

 

상수 초기화 방법

1) 일반적인 상수 초기화

public class Computer {

    // 초기화
    static final String MODEL_NAME = "Mac Book Air M1";
    static final long SERIAL = 123432;
}

 

2) 정적 블록을 이용한 초기화

public class Computer {

    static final String MODEL_NAME = "Mac Book Air M1";
    static final long SERIAL = 123432;
    static final String FULL_INFO;

    // 정적 블록으로 초기화
    static {
        FULL_INFO = MODEL_NAME + " " + SERIAL;
    }
}