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