-
JAVA - Mutable, ImmutableCS/Java 2021. 2. 18. 21:18
Mutable, Immutable
Immutable: String
-
문자열 연산에서 new 연산을 통해 생성된 인스턴스의 메모리 공간을 절대 변하지 않는다.
- 문자열에 변화를 주면 메모리 공간이 변하는 것이 아닌 새로운 String객체를 new로 만들어서 새로운 메모리 공간을 만들어 준다.
- 기존의 문자열은 GC에 의해 제거되어야 한다.
Mutable: Stringbuilder, Stringbuffer
-
문자열 연산에서 클래스를 한번 만들고 연산이 필요할 때 크기를 변경시켜 문자열을 변경한다.
- 문자열 연산이 자주 있을때 사용하는 것이 적절하다.
String
-
문자열 연산이 적고, 조회가 많을때 사용한다.
- 불변성을 가지기 때문에 멀티쓰레드 환경에서의 안정성을 가지고 있다.
- 즉, 문자열 연산이 적고 멀티쓰레드 환경일 경우 사용하는 것이 적절하다.
Stringbuilder
- 동기화를 지원하지 않는다.
- 싱글 쓰레드 환경이거나 쓰레드를 신경 쓰지 않아도 되는 상황이면 Stringbuilder를 사용하는 것이 적절하다.
- 즉, 문자열 연산이 많고 단일스레드이거나 동기화를 고려하지 않아도 되는 경우 사용하는 것이 적절하다.
Stringbuffer
- 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다.
- 즉, 문자열 연산이 많고 멀티쓰레드 환경일 경우 사용하는 것이 적절하다.
reference
'CS > Java' 카테고리의 다른 글
JAVA - 객체 직렬화 (0) 2021.02.19 JAVA - final (0) 2021.02.19 JAVA - foreach (0) 2021.02.18 JAVA - 오버로딩, 오버라이딩 (0) 2021.02.18 JAVA - 인터페이스와 추상클래스 (0) 2021.02.18 -