Algorithm
[JAVA] 문자열 클래스
v무지렁이v
2022. 1. 5. 00:26
String, StringBuffer, StringBuilder
- String : 불변 / 동기화X
- StringBuffer : 가변 / Synchronized 가능(Thread-safety)
- StringBuilder : 가변 / Synchronized 불가능
String 특징
- new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않는다.(Immutable)
- Garbage Collector로 제거되어야 한다.
- 문자열 연산시 새로 객체를 만드는 Overhead가 발생한다.
- 객체가 불변하므로, Multi-Thread 환경에서 동기화를 신경 쓸 필요가 없다.
String Class : 문자열 연산이 적고, 조회가 많은 멀티쓰레드 환경에서 사용하기 좋다.
StringBuffer, StringBuilder 특징
차이점
- StringBuffer : Thread-safe함
- StringBuilder : Thread-safe하지 않음
공통점
- new 연산으로 클래스를 한번만 만든다.(Mutable)
- 문자열 연산시 새로 객체를 만들지 않고 크기를 변경시킨다.
- StringBuilder와 StringBuffer 클래스의 메서드가 동일하다.
문자열 연산이 많을 때 쓰기 좋다.
StringBuffer Class : Multi-Thread 환경
StringBuilder Class : Single-Thread 또는 Thread를 신경쓰지 않는 환경