Scanner và BufferReader cả hai lớp đều được sử dụng để đọc đầu vào từ hệ thống bên ngoài. Máy quét thường được sử dụng khi chúng ta biết đầu vào là kiểu chuỗi hoặc kiểu nguyên thủy và BufferReader được sử dụng để đọc văn bản từ các luồng ký tự trong khi đệm ký tự để đọc ký tự hiệu quả. Sau đây là những điểm khác biệt quan trọng giữa lớp Máy quét và lớp BufferReader.
Sr. Không. | Phím | Lớp Máy quét | Lớp BufferReader |
---|---|---|---|
1 | Đồng bộ | Máy quét về bản chất không đồng bộ và chỉ nên được sử dụng trong trường hợp luồng đơn. | BufferReader về bản chất là đồng bộ. Trong môi trường đa luồng, nên sử dụng BufferReader. |
2 | Bộ nhớ đệm | Máy quét có ít bộ đệm 1 KB bộ đệm ký tự. | BufferReader có bộ đệm lớn 8KB byte Buffer so với Scanner. |
3 | Tốc độ xử lý | Máy quét chậm hơn một chút vì nó cũng cần phân tích cú pháp dữ liệu. | BufferReader nhanh hơn Scanner vì nó chỉ đọc một luồng ký tự. |
4 | Phương thức | Máy quét có các phương thức như nextInt (), nextShort (), v.v. | BufferReader có các phương thức như parseInt (), parseShort (), v.v. |
5 | Dòng Đọc | Máy quét có phương thức nextLine () để đọc một dòng. | BufferReader có phương thức readLine () để đọc một dòng. |
Ví dụ về Scanner so với 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); } }
Đầu ra
Enter an number: 1 You entered: 1 Enter an number: 2 You entered: 2