728x90
- 객체를 선언하는 final 키워드는 원시 타입에 선언하는 final 키워드와 동일한 역할을 한다.
- 변수 정의에서 지정된 값처럼 일단 할당이 되고 나면 메모리 위치가 변경되지 않는다.
- 원시 타입과 객체의 변수 정의와 메모리 할당은 전혀 다른 형태로 이루어진다.
- 객체 참조는 변경할 수 없어도 객체 내부의 값들은 개별 값들이 final 이 아니라면 변경할 수 있다.
@Test
void finalReferenceChanges() {
final int i = 42;
//i = 43 error
final List<String> list = new ArrayList<>();
//list = new ArrayList<>(); error
assertThat(0).isEqualTo(list.size());
list.add("adding a new value into my list");
assertThat(1).isEqualTo(list.size());
list.clear();
assertThat(0).isEqualTo(list.size());
}
728x90
'Language > 자바' 카테고리의 다른 글
왜 private인 필드가 변하지 않도록 하기 위해 final 키워드를 선언해야 하는가?(by.리플렉션) (0) | 2023.02.14 |
---|---|
메서드 변수에 사용하는 static 키워드 (0) | 2023.02.14 |
Comparable 과 Comparator 인터페이스의 차이는 무엇인가? (0) | 2023.02.14 |
JVM G1 GC 방식에 대해.. (0) | 2023.02.12 |
자바 가비지 콜렉터(GC)에 대한 정리. (0) | 2023.02.12 |
댓글