본문 바로가기
Develop/Java

[Java] String, StringBuilder, StringBuffer의 차이

by dev_m.w 2024. 7. 16.

코딩을 하면서 문자열을 다루는 일은 엄청 많다. 하지만  3개의 클래스 전부 String, StringBuilder, StringBuffer 문자열을 다루는 클래스나, 정확히 어떤 차이를 갖고있는지 잘 알고 사용해야한다.

 

String  불변 클래스

String은 한번 생성되면 내용을 변경할수 없는 불변 클래스 이기떄문에 아래 예제처럼 
문자의 결합을 하면 새로운 문자로 바뀌고 새로운 String의 인스턴스가 생성된다. 이러한 + 를 이용한 문자 결합은 성능이 떨어진다. 

String a = "abc"
String b = "d" 
 a = a+b ;

 

 

 StringBuffer 와 StringBuilder 가변 클래스

String의 불편 클래스와 달리 StringBuffer 와 StringBuilde는 

객체의 공간이 부족해지는경우 버퍼의 크기를 유연하게 늘려서 가변적이라는 차이가있다

문자열 결합이나 변경이 많다면 StringBuffer 클래스르 사용하는것이 좋다. 

 

그럼 StringBuffer And StringBuilder 의 차이점은 뭐냐?

StringBuffer는 각 메서드별로 Synchronized Keyword가 존재하여, 멀티스레드 환경에서도 동기화를 지원.
반면, StringBuilder는 동기화를 보장하지 않는다.

 

 

 

결론 

StringBuffer는 스레드의 안전한 프로그램이 필요할떄 

StringBuilder는 스레드에 안전한지 여부가 전혀 관계 없는 프로그램을 개발할 때 사용하면 좋다.