◆ StringBuffer
- 가변적인 문자열을 처리하기 위한 클래스입니다.
- 문자열을 변경 가능한 버퍼에 저장하고, 필요에 따라 추가, 수정, 삭제 등의 작업을 수행할 수 있습니다.
- 문자열의 크기를 동적으로 조정할 수 있으며, 문자열을 효율적으로 변경할 수 있도록 설계되어 있습니다.
- 멀티스레드 환경에서 동기화(synchronization)를 지원하므로, 여러 스레드에서 동시에 접근하는 경우 안전하게 사용할 수 있습니다.
- 하지만 동기화를 위한 추가적인 오버헤드가 발생하므로, 단일 스레드 환경에서는 StringBuilder보다 성능이 떨어질 수 있습니다.
◆ StringBuilder
- 가변적인 문자열을 처리하기 위한 클래스입니다.
- StringBuffer와 마찬가지로 문자열을 변경 가능한 버퍼에 저장하고, 추가, 수정, 삭제 등의 작업을 수행할 수 있습니다.
- StringBuffer와의 가장 큰 차이점은 동기화를 지원하지 않는다는 점입니다.
- 따라서 멀티스레드 환경이 아니라면 StringBuilder를 사용하는 것이 성능상 유리합니다.
- 단일 스레드 환경에서 더 빠른 속도를 제공하며, 동기화에 따른 오버헤드가 없어 가벼운 작업에 적합합니다.
◆ StringBuffer와 StringBuilder의 차이점
- 동기화(Synchronization)
- StringBuffer는 멀티스레드 환경에서 동기화를 지원합니다.
즉, 여러 스레드가 동시에 접근해도 안전하게 사용할 수 있습니다.
- StringBuilder는 동기화를 지원하지 않습니다.
따라서 단일 스레드 환경에서 사용할 때 더 빠른 성능을 제공합니다.
- 성능
- StringBuffer는 동기화를 지원하므로 스레드 안전성을 보장하기 위해 추가적인 오버헤드가 발생할 수 있습니다.
따라서 단일 스레드 환경에서는 StringBuilder보다 성능이 떨어질 수 있습니다.
- StringBuilder는 동기화를 지원하지 않기 때문에 동기화 관련 오버헤드가 없습니다.
이로 인해 단일 스레드 환경에서 빠른 속도를 제공합니다.
- 변경 가능성
- 두 클래스 모두 문자열을 변경 가능한 버퍼에 저장하고 수정할 수 있습니다.
따라서 문자열을 추가, 수정, 삭제하는 작업을 수행할 수 있습니다.