✔️ 문자열 클래스
String이란?
- new 연산을 통해 생성된 인스턴스의 메모리 공간이 변하지 않는 Immutable(불변, 값이 변하지 않는)한 특징을 가짐
- GC에 의해 제거되어야 함
- 문자열 연산 시 원본을 변경하지 않고,
새로 String 객체를 생성하는 오버헤드가 발생하여 메모리 공간의 낭비가 발생하고 성능이 떨어짐 - 객체가 불변하므로 멀티쓰레드의 동기화를 신경 쓸 필요가 없음
- 그러므로 문자열 연산이 적고, 조회가 많은 멀티쓰레드 환경에서 사용
StringBuffer란?
- new 연산을 통해 클래스를 한 번만 만드는 Mutable(값이 변하는)한 특징을 가짐
- 문자열 연산 시 새로 객체를 만들지 않고,
처음에 만든 객체를 이용해 연산하고 그 크기를 변경시켜 문자열을 변경함 - 멀티쓰레드의 동기화에 안전함
- 그러므로 문자열 연산이 많은 멀티쓰레드 환경에서 사용
StringBuilder란?
- new 연산을 통해 클래스를 한 번만 만드는 Mutable(값이 변하는)한 특징을 가짐
- 문자열 연산 시 새로 객체를 만들지 않고,
처음에 만든 객체를 이용해 연산하고 그 크기를 변경시켜 문자열을 변경함 - 멀티쓰레드의 동기화에 안전하지 않으므로 불가능함
- 그러므로 문자열 연산이 많은 싱글쓰레드 또는 쓰레드를 신경 안 쓰는 환경에서 사용
'Tech Interview > Language' 카테고리의 다른 글
[Language] non-static vs static (0) | 2024.03.18 |
---|---|
[Language] Java 접근 제어자 (0) | 2024.03.18 |
[Language] 클래스 & 객체 & 인스턴스 (0) | 2024.03.12 |
[Language] ==와 equals() (0) | 2024.03.12 |
[Language] 값에 의한 호출 & 참조에 의한 호출 (0) | 2024.03.11 |