Scanner와 BufferedReader는 모두 자바에서 입력을 받을 때 사용하는 클래스이지만, 그들의 용도와 성능, 사용 편의성에 차이가 있다. 아래에 Scanner와 BufferedReader의 차이점을 정리해 보았다.
Scanner
- 입력을 읽기 위해 사용되는 용도로, 다양한 Data Type(int, double, etc.)을 직접 읽어들이기 편리
- 공백이나 정규 표현식을 사용해 토큰(Token)단위로 쉽게 분리
- nextInt(), nextDouble(), nextLine() 등을 사용해 원하는 Data Type을 읽을 수 있다.
기본 선언 Scanner scanner = new Scanner(System.in);
nextInt(), nextDouble() | int number = scanner.nextInt(); | |
double number = scanner.nextDouble(); | 정수(int), 실수(double)를 입력 받을 때 사용 | |
nextLine() | String line = scanner.nextLine(); | 한 줄 전체의 문자열을 입력 받을 때 사용 |
BufferedReader
- 더 빠른 속도로 입력을 읽기 위해 사용
- 기본적으로 문자열 단위로 데이터를 읽음
- InputStreamReader와 함께 사용되어 다양한 소스로부터 입력을 받음
- 직접 문자열을 분리 → 추가적인 코드가 필요
- readLine() 메서드를 사용하여 한 줄씩 읽은 후, 필요에 따라 String.split() 메서드 또는 tokenizer 사용
기본 선언 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); |
BufferedReader를 사용하여 입력을 받은 후, StringTokenizer를 사용하여 문자열을 토큰으로 분리한다!
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());