Java
String과 StringBuffer의 차이
파지티브헌
2024. 9. 27. 13:07
StringBuffer와 String는 자바에서 문자열을 처리하기 위한 클래스들이지만, 그 목적과 사용 방식에서 차이가 있습니다. 이 두 클래스의 주요 차이점을 표로 정리하면 다음과 같습니다:
구분StringStringBuffer
불변성 (Immutability) | 불변 (Immutable): 한 번 생성된 String 객체는 수정할 수 없음. 새로운 문자열이 만들어지면 기존 객체는 변하지 않고 새로운 객체가 생성됨. | 가변 (Mutable): StringBuffer 객체는 한 번 생성된 후에도 수정 가능함. 문자열을 추가하거나 수정해도 새로운 객체를 생성하지 않음. |
동기화 (Thread Safety) | 동기화되지 않음: String은 동기화되지 않아 멀티스레드 환경에서 안전하지 않음. | 동기화됨: StringBuffer는 스레드 안전(Thread-safe)하며, 멀티스레드 환경에서 사용할 수 있음. |
성능 (Performance) | 문자열이 자주 변경되면 성능 저하가 발생할 수 있음. 새로운 객체를 계속 생성하기 때문. | 문자열이 자주 변경될 때 더 나은 성능을 제공. 기존 객체를 수정하기 때문에 메모리 및 속도 면에서 효율적. |
사용 목적 | 변경되지 않는 문자열을 다룰 때 적합. | 자주 변경이 필요한 문자열을 다룰 때 적합. 특히 멀티스레드 환경에서. |
만약 성능과 스레드 안전성이 중요하지 않다면, StringBuilder라는 또 다른 가변 문자열 클래스도 고려할 수 있습니다. StringBuffer와 비슷하지만, 동기화가 없어서 조금 더 빠릅니다.