반응형
코딩테스트 하다보니까 콘솔에 입출력하는 장치들에 대해서 새삼 많이 까먹고 있었다는걸 느낌...
특히 입력받을 때 BufferedReader + StringTokenizer 조합을 많이 썼는데,
많은 양을 출력해야할 때
StringBuffer랑 BufferedWriter가 얼핏보면 비슷해보여서
차이점에 대해서 공부해봄.

1. StringBuffer
StringBuffer는 주 목적이 문자열을 모으는것에 있음.
어디에? 메모리에.
문자열을 메모리에 누적시키는 객체임.
append()해서 문자열들을 모아서, 출력은 System.out.print()로 함.
문자열을 많이 조합해야될 때 쓰기 용이함.
StringBuffer sb = new StringBuffer();
sb.append("Hello").append(" ").append("World");
System.out.print(sb.toStrig());
2. BufferedWriter
BufferedWriter는 출력 자체를 빠르게 처리하는 스트림 클래스임.
출력을 버퍼에 모아놨다가, flush()나 close()할 때 실제로 출력됨.
입출력이 중심.
파일or콘솔에 많은 내용을 빠르게 출력해야될 때 용이함.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello");
bw.newLine(); // 줄 바꿈
bw.write("World");
bw.flush(); // 버퍼 비우기
bw.close();
챗지피티한테 초딩도 알아듣게 비유들어서 설명해달라 그러면 아주 잘해줌
(사전에 좀 갈궈야되긴함...)

그렇다고 하네요...
StringBuffer는 객체에 문자 조합하고, 모아두고 한번에 출력하는 느낌이라면
BufferedWriter는 프린터기 자체를 연결해놓고 그때그때 출력하는 거라고 합니다.
💫그럼 같이 쓰는것도 가능하냐?
ㄴ 가능합니다.
BufferedWriter랑 StringBuffer조합도 있음.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 5; i++) {
sb.append("Line ").append(i).append('\n');
}
bw.write(sb.toString());
bw.flush();
bw.close();
문자열 조작은 StringBuffer로 하고, 최종 출력은 BufferedWriter로 하면
대용량 파일 출력에 좋다고 합니다.
반응형
'JAVA' 카테고리의 다른 글
| [Java] stream()함수란(map, toList 활용 예제) (0) | 2025.05.04 |
|---|---|
| [Java] 자바 직렬화, 역직렬화가 뭘까?ObjectMapper 클래스 (0) | 2025.05.04 |