Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa Scanner và BufferReader Class trong Java

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