Scanner และ BufferedReader ใช้รับ input จากภายนอก Scanner ใช้เมื่อรู้ว่า input เป็น string หรือ primitive types BufferedReader ใช้อ่าน text จาก character streams พร้อม buffer เพื่อประสิทธิภาพ
| ลำดับ | หัวข้อ | Scanner Class | BufferedReader Class |
|---|---|---|---|
| 1 | Synchronous | ไม่ใช่ synchronized ใช้ single-threaded เท่านั้น | Synchronized ใช้ใน multi-threaded ได้ |
| 2 | Buffer Memory | Buffer เล็ก 1 KB char buffer | Buffer ใหญ่ 8 KB byte buffer |
| 3 | Processing Speed | ช้ากว่า (ต้อง parse data) | เร็วกว่า (อ่าน character stream อย่างเดียว) |
| 4 | Methods | nextInt(), nextShort(), nextLine() ฯลฯ | readLine(), parseInt(), parseShort() ฯลฯ |
| 5 | Read Line | nextLine() | 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("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