국쥐의 개발 일상

StringBuilder, StringBuffer 차이 본문

Java

StringBuilder, StringBuffer 차이

kuckjwi 2019. 11. 14. 23:14

Java에서 흔히 문자열을 연달아 붙일 때 StringBuilder, StringBuffer를 많이 사용한다.

하지만 이 두개의 Class는 같은 동작을 하지만 사소한 차이가 있다.

 

아주 오래전 부터 Java를 하신분들은 StringBuffer를 더 많이 사용하는 것으로 알고 있다. (StringBuffer는 JDK1.0 version에 출시 되었지만, StringBuilder는 JDK1.5 version에 출시 되었다.)

StringBuffer
StringBuilder

Class 선언부만 보면 큰 차이가 없다. 과연 뭔차이가 있을까?

바로 synchronized(동기화)의 사용 유무이다. 보통 synchronized 구문은 multi-thread 기반의 환경에서 사용한다. (스레드 접근 변수에 대한 값 보장 등등)

 

아래의 이미지는 실제 JDK의 StringBuffer, StringBuilder Class의 소스 이다.

 

StringBuffer.append

 

StringBuilder.append

결론을 말하자면, 다수의 thread를 통하여 특정 전역변수의 String 연산이 필요한 경우에는 StringBuffer를 사용하는게 맞고, 일반적으로 특정 method 안에서 지역변수로의 String 연산이 필요하다면 StringBuilder를 사용하는 것이 알맞다.

(필자의 경우 기술 면접 문제로도 나왔었음)

'Java' 카테고리의 다른 글

Lombok + Mapstruct 사용 시 @Builder와 함께 사용해보기  (0) 2021.05.23
Java7 try-with-resource  (0) 2019.11.10