ABOUT ME

Today
Yesterday
Total
  • Java 입출력 Scanner와 BufferedReader
    Java 2023. 11. 26. 23:59

    자바에서 입출력을 배울 때 Scanner를 임포트해서 Scanner객체를 만들어서 사용했었는데, 코딩 테스트 준비를 위해 사람들 코드를 참고하는데, Scanner대신 BufferedReader를 사용하길래 정리를 해봤다.

     

    Scanner

    Scanner 클래스는 Java에서 입력을 쉽게 처리하기 위한 유틸리티 클래스이다. 키보드, 파일, 문자열 등 다양한 소스에서 입력을 읽을 수 있으며, 다양한 데이터 유형을 편리하게 파싱할 수 있다.

     

    BufferedReader

    BufferedReader 클래스는 Java 입력 스트림에서 문자를 읽기 위한 클래스이다. 버퍼를 사용하여 입출력 성능을 향상시키며, read() 메서드를 통해 한 문자씩이 아니라 한 줄씩 데이터를 읽을 수 있습니다.

     

    속도 차이의 이유

    Scanner와 BufferedReader 두 클래스 다 사용자로부터 입력을 받을 수 있도록 하지만 속도의 차이가 있다.

    속도의 차이가 나는 이유는 버퍼의 사용여부이다.

    Scanner의 경우 1KB의 버퍼를 가지고 있기 때문에 입력이 들어게 되면 바로 프로그램에 전달되는 반면,

    BufferedReader의 경우 8KB의 버퍼를 가지고 있기에 사용자의 입력을 버퍼에 저장했다가 한번에 전송한다.

    또한, 위에서 말한 것 처럼 Scanner는 다양한 데이터 유형을 받을 수 있는 만큼 입력을 읽는 과정에서 내부에서 정규 표현식 적용, 입력값 분할, 파싱 과정 등을 거치기 때문에 비교적으로 느리다.

     


    참고자료

    https://dlee0129.tistory.com/238

    https://www.acmicpc.net/blog/search/%EC%9E%85%EB%A0%A5+%EC%86%8D%EB%8F%84

    'Java' 카테고리의 다른 글

Designed by Tistory.