본문 바로가기

language/자바

자바 String, StringBuffer, StringBuilder

 

결론부터 말하자면​

 

문자열을 수정하는 상황이라면 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