📜  Java中 Scanner 和 BufferedReader 类的区别(1)

📅  最后修改于: 2023-12-03 15:01:49.603000             🧑  作者: Mango

Java中Scanner和BufferedReader类的区别

Java中Scanner和BufferedReader类是两个输入流类,它们可以用来读取控制台或文件中的数据。虽然这两个类都可以实现读取数据的功能,但是它们在很多方面也有所不同。

1. 功能区别

Scanner类可以用于读取字符、整数、浮点数和字符串等基本类型数据,而BufferedReader类只能读取字符数据。因此,如果需要读取基本类型数据,可以使用Scanner类。

2. 性能区别

BufferedReader类比Scanner类更快,因为它是使用缓冲区来读取数据的。缓冲区可以减少IO操作,从而提高读取数据的效率。

3. 错误处理区别

当输入错误时,Scanner类会抛出InputMismatchException异常,需要程序员自己来处理。而BufferedReader类则会抛出IOException异常,也需要程序员来处理。因此,如果需要更精细的错误处理,可以使用BufferedReader类。

4. 适用场景区别

Scanner类通常用于简单的数据输入,例如读取用户输入的字符串或数字。而BufferedReader类通常用于读取大量文本数据,例如读取文件或网络连接的数据。

5. 示例代码
Scanner类示例
import java.util.Scanner;
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scanner.nextInt();
        System.out.println("您输入的整数是:" + num);
        scanner.close();
    }
}
BufferedReader类示例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BufferedReaderDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("请输入一个字符串:");
        String str = br.readLine();
        System.out.println("您输入的字符串是:" + str);
        br.close();
    }
}

以上是Scanner和BufferedReader类的区别介绍和示例代码。根据实际需求选择正确的输入流类可以提高程序的效率和可靠性。