본문 바로가기
JAVA

[Java] StringBuffer과 BufferedWriter의 차이점

by 우주물고기 2025. 7. 11.
반응형

코딩테스트 하다보니까 콘솔에 입출력하는 장치들에 대해서 새삼 많이 까먹고 있었다는걸 느낌...

 

특히 입력받을 때 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로 하면

대용량 파일 출력에 좋다고 합니다.

 

 

 

반응형