language/자바
자바 String, StringBuffer, StringBuilder
찬린이
2022. 1. 19. 22:49
결론부터 말하자면
문자열을 수정하는 상황이라면 StringBuffer, StringBuilder
멀티스레드 사용하면 StringBuffer
싱글스레드 사용하면 StringBuilder
아니면 String
이 클래스들의 차이
String은 불변 (immutable)
StringBuffer, StringBuilder은 가변 (mutable)
String
메모리가 불변이면...
String str = "a";
str = str + "b";
str = str.concat("c");
'+' 연산자나 concat 메소드를 하게되면
메모리에서는 다음과 같은 상황이 벌어진다.

기존에 있던것에 추가 하는것이아니라 메모리손해
StringBuffer VS StringBuilder
사용 방법, 메소드은 동일
<멀티스레드 환경일때>
Buffer는 동기화를 지원하여 안정성을 보장한다 (thread-safe)
속도가 buffer에 비해 느림
Builder는 동기화지원x -> 안정성 보장 x
빠름
정리
연산이 적으면 String
멀티환경이면 StringBuffer
싱글이면 Builder를 쓰자