Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Scanner와 BufferReader 클래스의 차이점

<시간/>

Scanner 및 BufferReader 두 클래스는 모두 외부 시스템에서 입력을 읽는 데 사용됩니다. Scanner는 일반적으로 입력이 문자열 또는 기본 유형이라는 것을 알고 있고 BufferReader는 효율적인 문자 읽기를 위해 문자를 버퍼링하는 동안 문자 스트림에서 텍스트를 읽는 데 사용됩니다. 다음은 Scanner 클래스와 BufferReader 클래스의 중요한 차이점입니다.

Sr. 아니요.

스캐너 클래스
BufferReader 클래스
1
동기
스캐너는 본질적으로 동기화되지 않으며 단일 스레드 경우에만 사용해야 합니다.
BufferReader는 본질적으로 동기적입니다. 멀티스레딩 환경에서는 BufferReader를 사용해야 합니다.
2
버퍼 메모리
스캐너에 1KB 문자 버퍼의 작은 버퍼가 있습니다.
BufferReader는 Scanner에 비해 8KB byte Buffer의 큰 버퍼를 가지고 있습니다.
3
처리 속도
스캐너는 데이터도 구문 분석해야 하므로 약간 느립니다.
BufferReader는 문자 스트림만 읽기 때문에 Scanner보다 빠릅니다.
4
메소드
스캐너에는 nextInt(), nextShort() 등과 같은 메서드가 있습니다.
BufferReader에는 parseInt(), parseShort() 등과 같은 메서드가 있습니다.
5
읽기 라인
스캐너는 라인을 읽는 nextLine() 메소드를 가지고 있습니다.
BufferReader는 라인을 읽는 readLine() 메소드를 가지고 있습니다.

스캐너와 BufferReader의 예

JavaTester.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class JavaTester {
   public static void main(String args[]) throws NumberFormatException, IOException {
      BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
      System.out.println("Enter an number:");
      int a = Integer.parseInt(bufferReader.readLine());
      System.out.printf("You entered: " + a);
      Scanner scanner = new Scanner(System.in);
      System.out.println("\nEnter an number:");
      a = scanner.nextInt();
      System.out.printf("You entered: " + a);
   }
}

출력

Enter an number:
1
You entered: 1
Enter an number:
2
You entered: 2