String vs StringBuffer/StringBuilder
둘의 가장 큰 차이점은 String 은 불변 ( immutable ) 의 속성을 갖는다는 것입니다.
이를 설명하기 위한 좋은 예시로, 위의 그림을 참고하면 좋을 것 같습니다.
즉, String은 불변성을 가지기 때문에, 변하지 않는 문자열을 자주 읽어들이는 경우 String 을 사용하면 좋은 성능을 기대할 수 있지만,
그렇지 않은 경우에는 String을 사용하는 것은 좋은 판단은 아닙니다.
문자열 추가, 수정, 삭제 등의 연산이 많이 일어나는 알고리즘의 경우에는 String을 사용하면 힙 메모리에 많은 임시 Garbage가 생성되어,
힙메모리 부족으로 어플리케이션 성능에 치명적인 영향을 가져다 줄 수 있습니다.
이를 위해, Java에서는 가변성( Mutable )을 가지는 StringBuffer/ StringBuilder 클래스를 도입하였습니다.
StringBuffer vs StringBuilder
둘의 가장 큰 차이점은 동기화의 유무입니다.
StringBuffer의 경우 동기화 키워드를 지원하여, 멀티스레드 환경에서 안전하다는 점입니다.
하지만, StringBuilder의 경우 동기화를 지원하지 않기 때문에 멀티스레드 환경에서 사용하는 것은 적합하지 않습니다.
참고
'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 |