본문 바로가기

Back-end/Java

[Java] String, StringBuilder, StringBuffer 각각의 차이

String불변입니다.

new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음 (Immutable)
문자열 연산 시 새로 객체를 생성하여 오버헤드 발생 시킴
불변이므로 동기화 신경 쓰지 않아도 되어 멀티 스레드 환경 사용 가능
Garbage Collector로 제거되어야 함.


StringBuilderStringBuffer는 이런 String의 특징 때문에 사용하는 가변 타입이라고 볼 수 있습니다.
StringBuilder와 StringBuffer는 Thread-safe 여부의 차이가 있습니다.

StringBuilder비동기로 Thread-safe 하지 않습니다.
StringBuffer 동기로 Multi-Thread 환경에서 사용할 때는 를 사용합니다.

new 연산으로 클래스를 한 번만 만듬 (Mutable)
문자열 연산시 새로 객체를 만들지 않고, 크기를 변경시킴