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를 신경쓰지 않는 환경