StringBuffer와 StringBuilder는 둘 다 문자열을 다루기 위해 자바에서 제공하는 클래스이다. 하지만 몇 가지 중요한 차이점이 있다.
공통점:
- 가변성 (Mutability): 둘 다 문자열을 변경할 수 있다. String은 불변(immutable)이지만, StringBuffer와 StringBuilder는 변경 가능한 문자열을 다룬다.
- 메서드: 대부분의 메서드가 동일하다. 예를 들어, append(), insert(), delete(), reverse() 등.
차이점:
- 동기화 (Synchronization):
- StringBuffer는 모든 메서드가 동기화(synchronized)되어 있다. 즉, 멀티쓰레드 환경에서 안전하다(thread-safe).
- StringBuilder는 동기화가 되어 있지 않다. 따라서 멀티쓰레드 환경에서 안전하지 않지만, 단일 쓰레드 성능이 더 좋다.
- 성능 (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 |