프로그래밍/JAVA

String, StringBuffer, StringBuilder

kkwonsy 2019. 3. 19. 16:09

1.

String은 Immutable이다.

vs

StringBuffer/StringBuilder는 mutable이다.





2.

String으로 +연산, concat을 이용하면 새로운 String 객체가 만들어지는 것이다.(JDK 1.5부터 +연산이 내부적으로 StringBuilder에 의해 이뤄지긴 함.)

참조되지 않는 String은 GC 대상이 된다.

문자열 연산이 많은 경우 오버헤드가 발생할 수 있다. 

vs

StringBuffer와 StringBuilder는 문자열 연산이 자주 있을 때 사용한다.





3.

StringBuffer는 멀티 스레드 환경에서 syncronized 키워드가 가능해 동기화가 된다. 즉, thread-safe하다

vs

StringBuilder동기화를 지원하지 않지만 연산이 빠르다. 

vs

String은 immutable이므로 thread-safe 하다.