본문 바로가기
Java

Java 기본 - final

by KongJiHoon 2025. 1. 2.

** final : final 키워드가 붙으면 더이상 값을 변경할 수 없다. final은 class, method를 포함한 여러 곳에 붙을 수 있다.

package final1;

public class FinalLocalMain {

    public static void main(String[] args) {
        // final 지역 변수
        final int data1;
        data1 = 10; // 최초 한번만 할당 가능

        // 컴파일 오류
//        data1 = 2;

        // final 지역 변수2
        final int data2 = 10;

        // data2 = 20; 컴파일 오류

    }

    static void method(final int parameter) {

        //컴파일 오류
//        parameter = 20;



    }

}
  • 위 예시 코드와 같이 final을 지역 변수에 설정할 경우 최초 한번만 할당할 수 있다.

final - 필드(멤버 변수)

package final1;

public class ConstructInit {

    final int value;

    public ConstructInit(int value) {
        this.value = value;
    }

}

 

package final1;

public class FieldInit {

    static final int CONST_VALUE = 10;

    final int value = 10;


}

 

package final1;

public class FinalFieldMain {

    public static void main(String[] args) {

        // final 필드 - 생성자 초기화
        System.out.println("생성자 초기화");

        ConstructInit constructInit1 = new ConstructInit(10);
        ConstructInit constructInit2 = new ConstructInit(20);
        System.out.println(constructInit1.value);
        System.out.println(constructInit2.value);

        // final 필드 - 필드 초기화
        System.out.println("필드 초기화");
        FieldInit fieldInit1 = new FieldInit();
        FieldInit fieldInit2 = new FieldInit();
        FieldInit fieldInit3 = new FieldInit();

//        fieldInit1.value = 20;
        System.out.println(fieldInit1.value);
        System.out.println(fieldInit2.value);
        System.out.println(fieldInit3.value);

        // 상수 접근
        System.out.println("상수");
        System.out.println(FieldInit.CONST_VALUE);


    }
}

 

실행 결과

생성자 초기화
10
20
필드 초기화
10
10
10
상수
10

 

  • FieldInit과 같이 필드를 필드에서 초기화 하는 경우, 모든 인스턴스가 위 오른쪽 그림과 같이 값을 가진다.
  • 3개가 같은 값을 가지므로 결과적으로 메모리 낭비로 이어질 수 있고 중복된 코드가 발생한다. 따라서 static 영역을 이용하고 final키워드를 사용하여 초기화 값이 변하지 않게 하면된다. 

상수(Constant)

  • 자바에서는 보통 단 하나만 존재하는 변하지 않은 고정된 값을 상수라 한다.
  • 자바 상수 특징
    • static final 키워드를 사용
    • 대문자를 사용하고 구분은_(언더바)로 한다.(관례)
    • 필드를 직접 접근해서 사용한다.

 

출처: https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

'Java' 카테고리의 다른 글

Java 기본 - 다형성 1  (2) 2025.01.22
Java 기본 - 상속  (0) 2025.01.03
Java 기본 - 자바 메모리 구조 및 static  (1) 2024.12.25
Java 기본 - 접근제어자  (0) 2024.12.21
Java 기본 - 생성자  (0) 2024.12.08