Java中Scanner和BufferReader类的区别


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

序号
关键点
Scanner类
BufferReader类
1
同步性
Scanner本质上是非同步的,只应在单线程情况下使用。
BufferReader本质上是同步的。在多线程环境中,应使用BufferReader。
2
缓冲内存
Scanner具有1KB字符缓冲的小缓冲区。
与Scanner相比,BufferReader具有8KB字节缓冲的大缓冲区。
3
处理速度
Scanner速度略慢,因为它还需要解析数据。
BufferReader比Scanner快,因为它只读取字符流。
4
方法
Scanner具有nextInt()、nextShort()等方法。
BufferReader具有parseInt()、parseShort()等方法。
5
读取行
Scanner具有nextLine()方法来读取一行。
BufferReader具有readLine()方法来读取一行。

Scanner与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);
   }
}

输出

Enter an number:
1
You entered: 1
Enter an number:
2
You entered: 2

更新于: 2019-11-26

11K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告