JVM

StringBuffer vs StringBuilder

kyoulho 2024. 7. 22. 16:11

StringBuffer와 StringBuilder는 둘 다 문자열을 다루기 위해 자바에서 제공하는 클래스이다. 하지만 몇 가지 중요한 차이점이 있다.

공통점:

  1. 가변성 (Mutability): 둘 다 문자열을 변경할 수 있다. String은 불변(immutable)이지만, StringBuffer와 StringBuilder는 변경 가능한 문자열을 다룬다.
  2. 메서드: 대부분의 메서드가 동일하다. 예를 들어, append(), insert(), delete(), reverse() 등.

차이점:

  1. 동기화 (Synchronization):
    • StringBuffer는 모든 메서드가 동기화(synchronized)되어 있다. 즉, 멀티쓰레드 환경에서 안전하다(thread-safe).
    • StringBuilder는 동기화가 되어 있지 않다. 따라서 멀티쓰레드 환경에서 안전하지 않지만, 단일 쓰레드 성능이 더 좋다.
  2. 성능 (Performance):
    • StringBuffer는 동기화로 인해 오버헤드가 발생하여, 단일 쓰레드 성능이 StringBuilder보다 떨어진다.
    • StringBuilder는 동기화 오버헤드가 없기 때문에 단일 쓰레드 환경에서 더 빠르다.

언제 사용해야 하나?

  • 멀티쓰레드 환경에서 문자열을 변경해야 할 경우 StringBuffer
  • 단일 쓰레드 환경에서 성능이 중요한 경우 StringBuilder
728x90

'JVM' 카테고리의 다른 글

JUnit  (0) 2024.07.28
테스트 커버리지와 JaCoCo  (0) 2024.07.27
java.security.invalidKeyException: Illegal Key Size  (0) 2024.05.04
자바 내부 클래스(Inner Classes)  (0) 2024.03.01
쓰레드 동기화  (0) 2024.03.01