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