[Java] StringBuilder 그리고 StringBuffer와의 차이점

dlrmawn·2023년 12월 8일
0

Java

목록 보기
9/16
post-thumbnail

StringBuilder VS StringBuffer

Java에서 문자열을 효율적으로 다루기 위한 클래스입니다.
이 클래스는 가변하며, 문자열을 추가하거나 수정하는 데에 사용됩니다.



StringBuilder의 메소드


  • StringBuilder() 생성자
    StringBuilder 객체를 생성합니다. 초기 용량(capacity)은 기본적으로 16이지만, 필요에 따라 자동으로 확장됩니다.
StringBuilder sb = new StringBuilder(); // 빈 StringBuilder 객체 생성
  • append(...) 메소드
    문자열, 문자, 다른 데이터 유형 등을 현재 StringBuilder에 덧붙입니다.
sb.append(" World"); // "Hello World"로 뒤에 문자열을 추가
  • insert(...) 메소드
    특정 위치에 문자열, 문자, 다른 데이터 유형 등을 삽입합니다.
sb.insert(5, "Awesome"); // "HelloAwesome World"로 5번째 인덱스에 문자열을 삽입
  • delete(...) 메소드
    지정된 범위의 문자를 삭제합니다.
sb.delete(5, 12); // "Hello World"에서 5부터 11번째 인덱스까지 문자를 삭제
  • reverse() 메소드
    문자열을 뒤집습니다.
sb.reverse(); // "dlroW olleH"로 문자열을 뒤집음
  • toString() 메소드
    StringBuilder의 내용을 String으로 변환합니다.
String result = sb.toString(); // StringBuilder의 내용을 String으로 변환

StringBuilder를 사용하면 문자열을 더 효율적으로 수정할 수 있으며, 반복적인 문자열 조작 작업에서 성능 향상을 제공합니다.



👊🏻 StringBuilder VS StringBuffer


  • 스레드 안전성 (Thread Safety)
    - StringBuilder: StringBuilder는 스레드에 안전하지 않습니다.
    따라서, StringBuilder는 단일 스레드 환경에서만 사용하는 것이 안전합니다. 동시에 여러 스레드가 StringBuilder 객체를 수정하려고 하면, 외부에서 추가적인 동기화를 제공해야 합니다.
    - StringBuffer: StringBuffer는 스레드에 안전합니다.
    즉, 여러 스레드에서 동시에 StringBuffer 객체를 수정해도 안전하게 작동합니다. 이는 내부적으로 메소드들에 대한 동기화를 제공하기 때문입니다.

  • 성능
    - StringBuilder: StringBuilder는 스레드 안전성을 제공하지 않기 때문에, 동기화 관련 오버헤드가 없습니다. 따라서 단일 스레드 환경에서 더 빠르게 동작할 수 있습니다.
    - StringBuffer: StringBuffer는 동기화를 제공하기 때문에 여러 스레드가 안전하게 사용할 수 있지만, 이로 인해 성능상의 오버헤드가 발생할 수 있습니다.

  • 가용성
    - StringBuilder: StringBuilder는 Java 5부터 도입되었으며, 상대적으로 최근에 추가되었습니다.
    - StringBuffer: StringBuffer는 Java 1.0부터 존재하며, 따라서 오래된 Java 버전에서도 사용 가능합니다.

🤔 어떤 것을 선택해야 할까요?

단일 스레드 환경에서 작업하고 성능이 중요하다면 StringBuilder를 사용하는 것이 좋습니다.
다중 스레드 환경에서 안전하게 작업해야하거나, 이에 대한 고려가 필요하다면 StringBuffer를 사용하는 것이 좋습니다.

profile
수정해야 할 내용 있으면 메일 부탁드립니다! ⍥

0개의 댓글