본문 바로가기

JAVA

String vs StringBuffer vs StringBuilder ( JAVA )

String vs StringBuffer/StringBuilder

둘의 가장 큰 차이점은 String 은 불변 ( immutable ) 의 속성을 갖는다는 것입니다.

이를 설명하기 위한 좋은 예시로, 위의 그림을 참고하면 좋을 것 같습니다.

즉, String은 불변성을 가지기 때문에, 변하지 않는 문자열을 자주 읽어들이는 경우 String 을 사용하면 좋은 성능을 기대할 수 있지만,

그렇지 않은 경우에는 String을 사용하는 것은 좋은 판단은 아닙니다.

 

문자열 추가, 수정, 삭제 등의 연산이 많이 일어나는 알고리즘의 경우에는 String을 사용하면 힙 메모리에 많은 임시 Garbage가 생성되어,

힙메모리 부족으로 어플리케이션 성능에 치명적인 영향을 가져다 줄 수 있습니다.

 

이를 위해, Java에서는 가변성( Mutable )을 가지는 StringBuffer/ StringBuilder 클래스를 도입하였습니다.

 

StringBuffer vs StringBuilder

둘의 가장 큰 차이점은 동기화의 유무입니다.

StringBuffer의 경우 동기화 키워드를 지원하여, 멀티스레드 환경에서 안전하다는 점입니다.

하지만, StringBuilder의 경우 동기화를 지원하지 않기 때문에 멀티스레드 환경에서 사용하는 것은 적합하지 않습니다.

 

 

 

 

 

 

 

 

참고

ifuwanna.tistory.com/221

 

[Java] String, StringBuffer, StringBuilder 차이 및 장단점

Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다

ifuwanna.tistory.com

 

'JAVA' 카테고리의 다른 글

JAVA Stream 사용법  (0) 2021.05.23
JAVA Exception  (0) 2021.05.16
정규표현식 JAVA 공식 문서로 혼내주자!😡  (0) 2021.04.29
Comparable, Comparator 어떻게 쓰지? JAVA  (0) 2021.04.23