본문 바로가기
언어/JAVA

[JAVA] BufferedReader와 Scanner

by 이민우 2021. 3. 30.
728x90
반응형

자바는 콘솔에서 입력을 받을 때 가장 자주 사용하는 두 가지 클래스가 있다. 하나는 BufferedReader, 다른 하나는 Scanner이다.

 

두 클래스는 콘솔에서 입력을 받는다는 공통점이 존재하지만, 차이점도 존재하는데, 가장 큰 차이점은 바로 속도이다.

 

BufferedReader는 버퍼를 사용해 입력을 받는다. 즉 키보드가 입력될 때마다 한 문자씩 버퍼로 이동하여 저장하고, 버퍼가 가득 차거나 줄바꿈이 일어나면 버퍼의 내용을 한 번에 전송하는 방식으로 사용된다.

 

이러한 점은 기존의 문자열을 한 글자 단위로 읽는 InputStreamReader에서 발전한 형태이며, 속도가 빠르다는 장점이 있다. 그렇기에 알고리즘 문제에서 Scanner 대신 자주 사용된다.

 

BufferedReader의 단점은 모든 입력을 String으로 받는다는 것인데, 다른 타입의 데이터로 받기 위해서는 형변환이 필요하여 불편할 수 있다.

 

 

그에 반해 Scanner공란과 줄바꿈을 모두 입력값의 경계로 인식하여 입력을 받는다. 그렇기에 비록 BufferedReader에 비해 속도는 느리지만, 문자열 파싱이 가능하고 데이터를 입력받을 때 자동으로 형변환이 이루어지기 때문에 별도의 형변환이 필요하지 않아 사용이 간편하다는 장점이 있다.

728x90
반응형

'언어 > JAVA' 카테고리의 다른 글

[JAVA] Garbage Collection (GC)  (0) 2021.03.30
[JAVA] String, StringBuffer, StringBuilder  (0) 2021.03.30
HashSet  (0) 2020.10.27
[JAVA][ARRAYS] 배열 비교  (0) 2020.05.26
[JAVA] String 맨날 헷갈리는 문법들  (0) 2020.05.07