❮
[JAVA] String / StringBuilder / StringBuffer
20180417
String
immutable 하다. : 한번 만들어진 인스턴스는 바뀌지 않는다.
자바에서 immutable한 객체는 Thread safe하므로
String 역시 Thread safe하다.
자바에서 String 인스턴스는 Constant String Pool 에 저장되는데
String string = "abc";
string = "def";
이렇게 하면 "abc" "def" 라는 두 개의 인스턴스가 생성되고 "abc" 로 가는 레퍼런스는 잃게 된다.
(GC의 대상이됨)
StringBuilder
String과 달리 mutable 하다.
힙에 생성된다.
thread safe 하지 않다. 대신 속도가 빠르다
StringBuffer
mutable하고
StringBuilder에서 사용가능한 메소드를 모두 사용할 수 있다.
모든 메소드가 synchronized 되어있어서 thread safe하다.
대신
속도가 느리다
자주 바뀌는 문자열이면 StringBuilder, 속도보다는 Thread safe가 중요한 상황에서는 StringBuffer.