본문 바로가기

PROGRAMMING/JAVA

[JAVA] Scanner와 BufferedReader

Scanner와 BufferedReader 차이 & 특징

 

1. 속도

속도는 압도적으로 BufferedReader가 빠르다.

Scanner는 입력 즉시 바로 데이터를 입력한다면

BufferedReader는 말 그대로 버퍼링이 된 후 전달된다. 버퍼링을 하게 되면 미리 버퍼에 데이터를 올려놓기 때문에 효율성이 높아진다. 

 

2. 사용편의

BufferedReader는 String만 지원되는 반면, Scanner는 정수형 소수형 문자 모두 지원한다.

그리고 Scanner는 정규식을 사용해 파싱 할 수 있다는 장점도 있다.

텍스트를 읽는 과정에서 정규 표현식을 사용해 기본적으로 공백을 기준점 삼아 입력 값을 토큰화 해 변환할 수 있다.

Scanner의 사용 편의성이 장점이지만 이러한 과정을 거치게 되며 낮은 퍼포먼스가 도출되어 속도에 있어선 단점으로 작용된다. 

 

3. 동기화

Scanner는 스레드 간 공유가 불가능한 싱글 스레드 형태로 운용되고

BufferedReader는 여러 스레드 간에 공유가 가능하다.

 

결론

입력받을 데이터가 많다? BufferedReader

입력받을 데이터가 많지도 않고, 문자로 입력받으면 형 변환이 골치 아프다? Scanner

속도 이슈로 시간 초과가 난다? BufferedReader

동기화가 지원되야한다? BufferedReader