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()读取一行的方法。 |
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