본문 바로가기
JAVA/JAVA

String / StringBuffer / StringBuilder 차이점

by 개미가되고싶은사람 2024. 3. 10.

자바에서는 문자열을 다루는 클래스로 String, StringBuffer, StringBuilder이라는 3가지 클래스가 있다. 위 3가지 클래스는 모두 문자열을 저장하고 관리하는 클래스인데 어떤 차이점이 있는지 궁금해서 한 번 정리해보기로 했다.

 

String과 StringBuffer, StringBuilder의 차이점

String객체는 한번 생성되면 객체의 값을 변경할 수 없다. 추가적으로  초기 공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 된다는 특징이 있다. 반면에 StringBuffer나 StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. 이러한 이유 때문에 String은 불변(immutable)하고 StringBuffer와 StringBuilder는 가변(mutable)이라는 특징을 가진다.

 

StringBuffer와 StringBuilder의 차이점

StringBuffer와 StringBuilder클래스는 둘 다 크기가 유연하게 변하는 가변적인 특성을 가지고 있다. 하지만 두 클래스는 동기화 지원의 유무가 다릅니다. StringBuffer는 각 메소드 별로 synchronized keyword가 존재하여 멀티 스레드 상태에서 동기화를 지원하고 StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있습니다. StringBuilder가 StringBuffer보다 속도는 더 빠르지만 언제 멀티스레드 환경에서 돌아가지 알지 못하기에 안정적인 StringBuffer로 통일하여 코딩하는것이 좋습니다.

 

 

문자열 자료형 정리

  String StringBuffer StringBuilder
가변 여부 불변 가변 가변
멀티 쓰레드 지원 O O X
연산 속도 3등 2등 1등
사용할 때 좋은 시점 문자열 추가 연산이 적고,
문자열 연산이 적고 멀티스레드 환경일 경우
문자열 연산이 많고,
멀티스레드 환경일 경우
문자열 추가 연산이 많고, 
빠른 연산이 필요한 경우
+
단일 스레드 환경일 경우

 

연산 속도에 관해서 자세하게 알고 싶은 분들은 아래 링크로 가면 자세하게 아실 수 있습니다.
https://madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java

 

 

참고문헌

https://dejavuhyo.github.io/posts/string-stringbuffer-stringbuilder/

 

String, StringBuffer, StringBuilder 차이 및 장단점

1. 개념 Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다.

dejavuhyo.github.io

https://madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java

 

자바 String, StringBuilder 그리고 StringBuffer 성능 차이 비교

자바에서 String과 StringBuilder 그리고 StringBuffer의 차이는 무엇일까? 그리고 제일 빠른 연산 속도는 어떤 것일까?

madplay.github.io