Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

동그란 도그린

StringBuilder와 StringBuffer 본문

알고리즘/Java

StringBuilder와 StringBuffer

도그rin 2023. 12. 11. 18:52

StringBuilder와 StringBuffer를 사용하는 이유

String의 원본 값은 변경할 수 없음. 불변(immutable) 자료형

아래 코드에서 객체를 수정한 것처럼 보이지만, 사실 또다른 새로운 String 객체를 생성한 것임.

String 타입의 문자열을 수정할 때마다 메모리 내의 힙 영역에 값이 변경된 새로운 인스턴스가 생성되므로 메모리 낭비가 될 수 있고, 속도도 느려짐.

String str = "hello";
str += "world";

따라서 문자열 변경 작업이 거의 없을 때는  String을 사용하고, 문자열을 빈번하게 추가, 수정, 삭제하는 경우에는 StringBuilder와 StringBuffer를 사용하는 게 좋음.

StringBuilder와 StringBuffer는 내부 Buffer(데이터를 임시로 저장하는 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업을 할 수 있음.

 

StringBuilder과 StringBuffer의 차이 - 1가지

  • StringBuilder와 StringBuffer은 딱 한 가지 차이점이 있음
  • 멀티 스레드(multi thread) 환경에서 안전한지 아닌지의 차이
    • StringBuffer 클래스는 동기화를 지원하기 때문에 멀티 스레드 환경에서도 안전함,
      • StringBuffer는 멀티 스레드 환경에서, 한 스레드가 append()를 수행하고 있으면 다른 스레드가 append()를 수행하지 못하도록 잠시 대기시키고 순차적으로 실행하도록 함.
    • StringBuilder 클래스는 동기화를 지원하지 않으므로 멀티 스레드 환경에서는 안전하지 않음.
      • 따라서 속도 면에서는 StringBuffer보다 좋음
Comments