inflearn

[인프런] 김영한의 자바 기본 강의 섹션8. final (240111)

hail2y 2024. 1. 11. 22:18

01/11 섹션8 final 필기

final 전에 static 강의 들으면서 쉽지 않다란 생각이 좀 진지하게... 들었는데 final은 숨통이 트인다! 둘 다 접근 제어자면서 난이도 차이 난다고 느끼는 건 내 착각일까 하면서 static의 어려움을 중화해 보려 노력했다..(?)

 

  • 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다는 의미다.  -- 클래스, 메서드에도 붙을 수 있다.
    == 최초 한 번만 할당 가능
  • 필드에 final 키워드를 사용할 경우, 생성자를 통해 최초 한 번 초기화할 수 있다.
  • 하지만 생성자를 쓰지 않고 바로 값을 할당한 경우, 생성자를 통해 초기화할 수 없다. 

생성자에서 초기화 - 인스턴스마다 다름

필드에서 초기화 - 인스턴스마다 같음 --> 메모리 낭비, 중복

 

고정된 값으로, 못 바꾸니까 static final을 사용한다.

 

static final

보통 단 하나만 존재하는(=static) + 변하지 않는 고정된 값(=final) = 상수

  • static final 상수는 변수명을 대문자로 설정한다.
  • 언더스코어로 표현한다. ex. CONST_VALUE
  • 필드에 직접 접근하려 해도 데이터가 변하지 않으니까 public으로 해도 괜찮다.

실생활 상수(PI, 24시간, 60분...), 애플리케이션의 다양한 설정을 위한 상수

후자는 애플리케이션 전반에서 사용되기 때문에 public을 자주 사용한다.

 

  • 매직 넘버: 코드에서 하드코딩된 상수 값, 코드 내에서 직접 사용하는 것, 숫자가 의미하는 바가 명확하지 않아 코드의 가독성을 저하시키고 유지보수를 어렵게 한다. -> 상수(변수명)로(으로) 설정하면 코드 이해에 도움을 준다. 
  • 참조형 변수에 final 키워드를 붙이는 것은 참조형 변수에 들어있는 참조값을 다른 값으로 변경할 수 없다는 것이다. 
    하지만, 참조하는 대상의 값은 변경할 수 있다. (멤버 변수에 final이 붙어 있다면 당연히 안 된다.)

--끝--