Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 방어적 복사
- throw 와 throws 차이
- 자바로 만들수 있는 것
- 블랙잭 회고
- 자바 4334
- 윤년계산하기
- 객체지향적인 설계
- 리스코프치환원칙
- 상근날드
- ServiceTest
- 제임스고슬링
- 프로젝트 패키지 구조
- Getter Setter
- 백준
- 상수와 Enum
- JDK
- 테스트 성능 개선
- JXM
- 우테코
- PR 오류
- Oracle JDK와 OpenJDK의 차이
- 우테코4기
- There isn't anything to compare.
- 자바의 종류
- 인수테스트
- ControllerTest
- 우아한테크코스
- 자판기미션
- java 1000번 A+B
- 자바 버전 다운 그레이드
Archives
- Today
- Total
개발새발
final 과 static final 의 차이? 본문
매직 넘버/매직 리터럴을 static final로 선언하는 이유가 뭘까?
범위를 표현하거나, 출력문을 사용하면서 이전에 읽었던 자바 코딩의기술 내용 중 매직넘버를 상수로 대체 하라는 내용이 떠올랐다.
그래서 static final 을 사용해서 구현했는데,
문득 불변함을 표시하고 변수명으로 사용 의미를 표현하려면 final로도 충분하지 않나? 라는 생각이 들었고 알아보기로 했다.
매직 넘버/매직 리터럴
프로그래밍에서 상수로 선언하지 않은 숫자를 매직 넘버, 문자열을 매직 리터럴이라고 한다.
final
final은 해당 오브젝트가 단 한번 할당할 수 있음을 의미한다. 즉 값이 변하지 않음을 의미한다.
static
데이터가 프로그램 실행 직후부터 끝날 때까지 메모리 수명이 유지됨을 의미한다.
매직 넘버/매직 리터럴을 static final로 선언하는 이유가 뭘까?
이 값들은 모든 클래스 인스턴스에서 똑같이 사용할 값이기 때문에,
클래스 레벨에서 처음 한번만 하나의 메모리 공간을 할당하고 계속 사용하면 메모리 절약이 가능하기 때문임을 알게 되었다.
느낀점
해당 내용을 찾아보며 미션으로 짠 코드가 static final 의 장점을 못살리고 있다고 느꼈다.
리팩토링 해야겠다.
그리고 네이밍을 할 때 어떻게하면 더 직관적으로 사용 의미가 들어나게 할지? 고민해봐야겠다.
참고
'java' 카테고리의 다른 글
Getter Setter 를 쓰지 말아야하는 이유가 뭘까? (0) | 2022.02.20 |
---|---|
HashSet, TreeSet, LinkedHashSet (0) | 2022.02.20 |
private 생성자를 선언하는 목적이 뭘까? (0) | 2022.02.20 |
자바란 Write Once, Run Everywhere. (0) | 2020.12.20 |
자바 개발 환경 설치하기2(이클립스 설치하기) (0) | 2020.03.11 |