Java - final

JeongHoHyun·2024년 12월 10일

Java

목록 보기
4/23

📖 final

  • 최초 할당되고 그 이후 값이 변경되지 않아야 하는 경우 사용한다.

✏️ final - 지역변수

  • final은 값을 최초 초기화 할때만 지정할 수 있고 그 이후에 변경할 수 없다.

  • final을 지역 변수에 설정할 셩우 최초 한번만 할당할 수 있다. 이후 변수의 값을 변경하면 컴파일 오류가 발생한다.

  • 매개변수에 final이 붙으면 메서드 내부에서 매개변수의 값을 변경할 수 없다. 따라서 호출 시점에 사용된 값이 끝까지 사용된다.

    ✏️ final - 필드(멤버 변수)

    생성자 초기화

  • final을 필드에 사용할 경우 해당 필드는 생성자를 통해서 한번만 초기화 될 수 있다. (초기값이 없을경우)

  • 생성자를 통해서 final필드를 초기화 하는 경우, 각 인스턴스 마다 final 필드에 다른 값을 할당 할 수 있다. (물론 final을 사용했기 때문에 이후 변경은 불가능)

    필드 초기화

  • final 필드를 필드에서 초기화 하는 경우, 모든 인스턴스가 같은 값을 가진다.

  • 생성자 초기화와는 다르게 필드 초기화는 해당 값이 미리 정해져있기 때문이다.

  • 모든 인스턴스가 같은 값을 사용하기 때문에 결과적으로 메모리를 낭비하게 된다, 또 같은 값이 계속 생성되는것은 명확한 중복 현상이다. 이럴 때 static을 사용한다.

    📌 static final (상수)

  • 자바에서는 static 과 final 두개가 붙은 변수를 상수라고 한다.

  • 상수의 경우 전부 대문자로 생성한다.(관례)

  • static 영역은 단 하나에만 존재하는 영역이다. 앞서 설명한 중복과 메모리 비효율 문제를 해결할 수 있다.

  • 이런 이유로 필드에 final + 필드 초기화를 사용하는 경우 static을 붙여서 사용하는 것이 효과적이다.

static final int CONST_VALUE = 10;

✏️ final 변수와 상수

상수 (Constant)

  • 상수는 변하지 않고, 항상 일정한 값을 갖는 수를 말한다.
  • 자바에서는 보통 단 하나만 존재하는 변하지 않는 고정된 값을 상수라고 한다.
  • 상수는 static final 키워드를 사용한다.

📌 자바 상수 특징

  • static final 키워드를 사용한다.
  • 대문자를 사용하고 구분은 _(언더스코어)로 한다. (관례)
    • 일반적인 변수와 상수를 구분하기 위해 이렇게 한다.
  • 필드를 직접 접근해서 사용한다.
    • 상수는 기능이 아니라 고정된 값 자체를 사용하는 것이 목적이다.
    • 상수는 값을 변경할 수 없다. 따라서 필드에 직접 접근해도 데이터가 변하는 문제가 발생하지 않는다.
profile
Java Back-End 2022.11.01 💻~ing

0개의 댓글