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+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告