System.out.print vs BufferedWriter
2가지를 많이 써봤다.
둘 중 하나만 우세하다면 굳이 2개의 클래스로 구분될 필요가 없기에 각각의 존재 이유와 용도를 알고 싶었다.
작은 데이터이지 않는 한 왠만하면 코딩테스트에서는
BufferedWriter를 쓰도록 한다. 속도가 빠르기 때문이다.
그렇다면 System.out.print은? 필요 없는 것일까?
아니다.
각각의 특징을 알아보자!
System.out.print(PrintStream)
- 압도적인 편의성: throws IOException이나 try-catch 같은 예외 처리를 억지로 안 해줘도 돼서 코드가 깔끔해진다.
- 실시간 즉각 출력: 데이터를 모아두지 않고 그때그때 콘솔에 쏜다.
그래서 코드 중간중간 변수값이 맞는지 확인하는 디버깅 용도나, 사용자와 실시간으로 텍스트를 주고받는 대화형 프로그램에서는 필수다!
- 스레드 안전성 (Thread-safe): 여러 스레드가 동시에 출력을 시도해도 문자가 이리저리 섞이지 않도록 내부적으로 동기화 처리가 아주 잘되어 있다.
BufferedWriter
- 대용량 처리의 속도: 짐을 트럭에 꽉꽉 채워서 한 번에 배달하는 원리다.
코딩 테스트처럼 1초 안에 수백만 개의 데이터를 한 번에 뱉어내야 할 때 발생하는 '병목 현상'을 완벽하게 없애주지.
- 가볍지만 직접 처리해야하는 코드: flush(), close(), 예외처리 등을 직접 써야한다.
결론
실무에서 로그를 찍거나 화면에 바로 보여줘야 할 땐 System.out.print(또는 로거)!
코딩 테스트처럼 데이터 양이 매우 많을 땐 BufferedWriter!
'Java' 카테고리의 다른 글
| [Do it! 알고리즘 코딩 테스트 자바] 백준 17298번 오큰수 / 11286번 절댓값 힙(6일차) (1) | 2026.03.01 |
|---|---|
| [Java] 스택과 큐를 쓰면 안되는 이유 (0) | 2026.03.01 |
| [Do it! 알고리즘 코딩 테스트 자바] 슬라이딩 윈도우와 Deque - 백준 11003(5일차) (0) | 2026.02.27 |
| [Do it! 알고리즘 코딩 테스트 자바] 투 포인터 - 백준 2018, 1940, 1253번 (4일차) (1) | 2026.02.27 |
| [Do it! 알고리즘 코딩 테스트 자바] 백준 10986나머지 합- 구간합/나머지 연산의 활용(3일차) (0) | 2026.02.26 |