JAVA

[JAVA] static과 final과 static final

ttony-kim 2023. 3. 7. 17:54

✔ static

컴파일 시간Static(=Class, Method) 메모리에 할당

✔ final

초기화 방법

  1. 선언 과 동시에 초기화
  2. 생성자에서 초기화
class finalTest {
    final int val1 = 1;
    final int val2;

    public finalTest() {
        val2 = 4;
    }
}

✔ static final

초기화 방법

  1. 선언과 동시에 초기화
  2. static block에서 초기화
class staticFinalTest {
    static final int val1 = 1;
    static final int val2;

    static {
        val2 = 2;
    }
}

hello

👉 DI로 의존성 주입할 경우 생성자를 통해 값이 주입되므로 final 사용

class diTest {
    private final String diVal;

    public diTest(String diVal) {
        this.diVal = diVal;
    }
}