Final 과 Immutable 비교
final은 키워드이고, Immutable은 패턴이다.
final이면 Immutable인가?
아니다.
final
변수의 참조주소는 변경될 수 없다.
immutable
객체내부의 정보는 객체가 생성될 때 주어진 것이며, 객체가 살아 있는 동안 그대로 보존된다.
String class를 immutable class라고 한다.
String 객체는 한번 선언되면 그 값이 변경되지 않기 때문이다.
Example
String name = "Bactoria"; name = "Junoh";
"Bactoria"가 "Junoh"로 변경된것 아니냐고 할 수 있겠지만,
아래처럼 새 객체가 만들어질 뿐이다.
변경은 없다.
final
은 참조를 변경하지 못한다.
final String name = "Bactoria"; name = "Junoh";
이펙티브자바에서 변경 불가능 클래스는 String 과 같은 immutable class를 말한다.
final이랑 헷갈리지말자.
참고자료
'Old Posts > Java' 카테고리의 다른 글
StringBuffer -> StringBuilder 어떻게 바뀔까 ? (0) | 2018.02.21 |
---|---|
자바8 .collect(Collectors.joining()) 람다 (0) | 2018.02.09 |
String vs StringBuffer vs StringBuilder (0) | 2018.02.09 |
Thread (0) | 2018.01.17 |
Java Grammar ( for better Algorithm ) (0) | 2018.01.14 |