[Java] BufferedReader vs Scanner
BufferedReader와 Scanner 클래스를 비교해 알아보았다.
두 클래스 모두 자바에서 사용자의 입력을 받는데 사용된다.
그동안 계속 Scanner만 써오다가 디자인패턴을 공부하면서 BufferedReader가 나와 두 클래스를 정리해놓기로 했다.
- BufferedReader / BufferedWriter
버퍼를 사용하는 입출력 메소드다. 이와 비슷한 메소드로 InputStreamReader가 있다. InputStreamReader 는 문자열은 Character 단위로 읽어 들인다. 따라서 길이가 긴 문자열을 읽어들일때는 불편하기 때문에 이를 보완하기 위해 BufferedReader를 사용한다.
버퍼를 사용하는 입력과 사용하지 않는 입력 메서드는 처리되는 방식에 차이가 있다.
버퍼를 사용하는 경우 사용자에게 입력을 받는 즉시 프로그램에 전달 되는 것이 아니라, 버퍼가 가득 차거나, 개행 문자가 나타나는 경우 전달된다. 속도가 Scanner보다 빠르다. 입력값은 String으로 처리된다.
- Scanner
스페이스와 엔터를 입력값의 경계로 처리한다. 데이터 타입은 입력 받는 시점에서 결정되기 때문에 별도의 casting이 필요하지 않다.
따라서 BufferedReader를 사용하는데 스페이스를 경계로 사용하고 싶을 때는 형변환과 token 처리가 필요하다.
No comments: