Java中Scanner和BufferReader类之间的区别

Scanner和BufferReader这两个类都用于从外部系统读取输入。当我们知道输入是字符串类型或原始类型并且BufferReader用于从字符流中读取文本,同时缓冲字符以有效读取字符时,通常使用Scanner。以下是Scanner类和BufferReader类之间的重要区别。

序号

扫描仪类别
BufferReader类
1
同步
扫描仪本质上不是同步的,仅应在单线程情况下使用。
BufferReader本质上是同步的。在多线程环境中,应使用BufferReader。
2
缓冲存储器
扫描程序几乎没有1 KB字符缓冲区的缓冲区。
与Scanner相比,BufferReader具有8KB字节缓冲区的大缓冲区。
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("输入一个数字:");
      int a = Integer.parseInt(bufferReader.readLine());
      System.out.printf("You entered: " + a);
      Scanner scanner = new Scanner(System.in);
      System.out.println("\n输入一个数字:");
      a = scanner.nextInt();
      System.out.printf("You entered: " + a);
   }
}

输出结果

输入一个数字:
1
You entered: 1
输入一个数字:
2
You entered: 2