当我使用BufferedInputStream获取用户输入时,我会有什么不同? java的

时间:2017-03-05 06:57:40

标签: java java.util.scanner bufferedinputstream

下面的代码之间有什么区别?

// case01

Scanner sc=new Scanner(new BufferedInputStream(System.in));
while(sc.hasNext())
    {
        System.out.println("输出:"+sc.next());
    }

// case02

Scanner sc=new Scanner(System.in);
while(sc.hasNext())
{
    System.out.println("输出:"+sc.next());
}

2 个答案:

答案 0 :(得分:0)

BufferedInputStream使用缓冲区。你可以说它主要用于优化。

答案 1 :(得分:0)

BufferedInputStream在用于包装流时会提供最大的值,这会对每个获取的字节产生开销,因为它一次预取一个块的字节。例如,从硬盘驱动器获取,甚至从套接字获取时(因为它限制了为每个读取的字节调用操作系统的开销)。

但是,System.in通常连接到键盘。因此,通过缓冲获得的好处几乎没有益处。另一个例子是流是基于字节数组的(例如ByteArrayInputStream)。在任何一种情况下都没有真正的好处。