본문 바로가기
java

Scanner vs BufferedReader 차이점

by hyodev 2025. 4. 4.

속도제한이 있는 문제를 풀고 있었는데 Scanner를 썼을 때 해결이 안되는 일이 발생함

그래서 답을 확인해보니까 BufferedReader를 쓰라고 함.

BufferedReader 이름이 너무 길어서 거의 안썼는데 장점이 있나봄

이 둘의 차이점을 확인해보니까 

 

속도 상대적으로 느림 (내부적으로 파싱 작업 수행) 빠름 (버퍼를 사용하여 데이터를 한 번에 읽음)
입력 방식 next(), nextInt(), nextDouble() 등 다양한 메서드 제공 readLine()을 사용해 한 줄을 읽고 직접 파싱해야 함

이런 차이가 있었음

 

Scanner가 유리한 경우

  • 정수, 실수, 문자열을 간편하게 입력받을 때
  • 공백 단위로 여러 개의 값을 입력받을 때
  • 간단한 프로그램에서 빠르게 구현할 때

BufferedReader가 유리한 경우

  • 대량의 데이터를 읽어야 할 때 (입출력 성능이 중요할 때)
  • 파일에서 빠르게 데이터를 읽어야 할 때
  • 한 줄 전체를 읽고 직접 가공해야 할 때

그래서 BufferedReader가 빠른이유가 buffer 때문이라는데

 

버퍼(Buffer)란?

  • 데이터를 한 번에 읽거나 쓸 수 있도록 임시 저장 공간을 제공하는 메모리.
  • 작은 단위로 여러 번 입출력을 하면 성능이 떨어지므로, 큰 덩어리로 처리해서 속도를 높임

 

Scanner는 공백이나 개행 단위로 토큰을 분석하면서 읽고 BufferedReader는 한 줄 전체를 한 번에 읽어서 빠르다고 함

8배정도 빠르다고 한다...