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());

 

+ Recent posts