티스토리 뷰

Java

String VS StringBuilder VS StringBuffer

snail voyager 2019. 10. 19. 17:12
728x90
반응형

String

- immutable(불변적), thread-safe(여러 스레드가 동시에 접근해도 값이 변하지 않기 때문에 문제가 없다.)

- String 객체를 생성하여 메모리 공간은 변하지 않는다. (Heap 영역에 할당)

- +, concat 연산 시 새로운 String 객체를 생성하여 문자열을 복사하고 새로운 객체를 가리킨다. (오버헤드 발생)

- 기존 String 객체는 특정 시점에 Garbage Collector 에 의해 반환

- String 클래스는 문자열 연산이 적고 조회가 많을 때 멀티쓰레드 환경에서 사용하면 좋음.

 

StringBuilder

- mutable(가변적)

- 클래스를 한번 생성하고 연산 시 버퍼크기를 변경하여 문자열을 변겅

- 동기화를 지원하지 않아서 멀티스레드 환경에 취약

- 동기화를 고려하지 않기 때문에 StringBuffer보다 연산처리가 빠르다

 

StringBuffer

- mutable(가변적)

- synchronized 동기화 가능하여 멀티스레드 환경에 안전

 

728x90
반응형

'Java' 카테고리의 다른 글

Comparable vs Comparator  (0) 2020.02.06
Iterator  (0) 2020.02.04
EJB (Enterprise JavaBeans)  (0) 2018.08.28
문자열 순열  (0) 2016.09.01
Collection  (0) 2016.08.31
반응형
300x250