1. Scanner (Java 5+ - ง่ายที่สุด)
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter string: ");
String str = sc.nextLine(); // อ่านบรรทัดเต็ม
System.out.print("Enter int: ");
int num = sc.nextInt(); // อ่าน int
System.out.print("Enter float: ");
float f = sc.nextFloat(); // อ่าน float
System.out.println("String: " + str);
System.out.println("Int: " + num);
System.out.println("Float: " + f);
}
}
2. BufferedReader (เร็วกว่า, เหมาะสำหรับข้อมูลเยอะ)
import java.io.*;
public class Demo {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter name: ");
String name = br.readLine(); // อ่านบรรทัดเต็ม
System.out.println("Name: " + name);
}
}
3. Console Class (Java 6+ - สำหรับ password)
import java.io.Console;
public class Demo {
public static void main(String[] args) {
Console console = System.console();
if (console != null) {
String password = new String(console.readPassword("Password: "));
System.out.println("Length: " + password.length());
} else {
System.out.println("Console not available (e.g. in IDE)");
}
}
}
เปรียบเทียบ
| คุณสมบัติ | Scanner | BufferedReader | Console |
| Parsing (int, double) | Built-in (nextInt, nextDouble) | Manual (Integer.parseInt) | Manual |
| Performance | ช้ากว่า (parsing overhead) | เร็ว (buffered) | เร็ว |
| Password input | ไม่รองรับ (โชว์ข้อความ) | ไม่รองรับ | รองรับ (readPassword) |
| Delimiter customization | ได้ (useDelimiter) | ไม่ได้ (line-based) | ไม่ได้ |
| Thread-safe | ไม่ | ได้ (synchronized) | ได้ |
Best Practice
- General purpose: Scanner
- High performance / Large input: BufferedReader
- Password / Sensitive: Console.readPassword()
- ปิด resource: ใช้ try-with-resources (Java 7+)