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
廣告