결론부터 말하자면
문자열을 수정하는 상황이라면 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를 쓰자
'language > 자바' 카테고리의 다른 글
자바 Integer.parseInt() 진수 표현 (0) | 2022.01.19 |
---|---|
자바 2진수 앞에 0 출력 (0) | 2022.01.19 |
자바 Scanner nextLine 오류 buffer (0) | 2022.01.19 |
자바 2차원 배열길이 length (0) | 2022.01.19 |
자바 ArrayList , List (0) | 2022.01.19 |