알고리즘 문제를 풀 때 답을 제출하기 위해서 문자열을 조작할 때 자주 사용하는 클래스가 두가지가 있습니다.
StringBuilder와 BufferedWriter가 있는데, 두가지 모두 유사하게 사용하고 있지만, 자세하게 어떤 차이가 있는지 그리고 어떤 특징과 장단점이 있는지 잘 정리가 안되어서 각각의 특징과 장단점을 알아봅시다.

StringBuilder와 BufferedWriter는 둘 다 문자열을 처리하는 클래스입니다. 하지만 각각의 특징과 장단점은 다릅니다.
StringBuilder
StringBuilder는 문자열을 조작하는 데 사용되며, 내부적으로 가변 문자열 배열을 사용합니다. 문자열 조작은 메모리 내부에서 수행되므로 속도가 빠르며, 문자열을 추가하거나 수정하는 데 용이합니다. 반면에 StringBuilder는 멀티스레드 환경에서 안전하지 않으므로, 동시에 여러 스레드에서 접근하거나 수정하는 것은 권장되지 않습니다.
StringBuilder의 장점
- 문자열 조작이 빠르다.
- 추가 및 수정이 용이하다.
StringBuilder의 단점
- 멀티스레드 환경에서 안전하지 않다.
- 문자열 출력 기능이 없다.
BufferedWriter
BufferedWriter는 출력 스트림에 대한 버퍼를 제공하여 문자열을 출력할 때 I/O 작업 횟수를 줄입니다. 즉, 출력 작업이 매우 빠르게 수행되며, 매번 파일에 접근하지 않고, 한 번에 많은 양의 데이터를 출력할 때 유용합니다. BufferedWriter는 멀티스레드 환경에서 안전합니다.
BufferedWriter의 장점
- 출력 작업이 매우 빠르다.
- 파일에 접근하지 않고, 한 번에 많은 양의 데이터를 출력할 때 유용하다.
BufferedWriter의 단점
- 문자열 조작 기능이 없다.
참고 자료
StringBuilder 공식문서: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StringBuilder.html
BufferedWriter 공식문서: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/BufferedWriter.html
'IT > VS' 카테고리의 다른 글
[JavaScript] NPM vs Yarn (0) | 2023.07.14 |
---|---|
[Shell] $*과 $@의 차이 (0) | 2022.07.30 |
[ VS]arguments VS parameter (0) | 2021.09.23 |