下面的代码之间有什么区别?
// 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());
}
答案 0 :(得分:0)
BufferedInputStream使用缓冲区。你可以说它主要用于优化。
答案 1 :(得分:0)
BufferedInputStream在用于包装流时会提供最大的值,这会对每个获取的字节产生开销,因为它一次预取一个块的字节。例如,从硬盘驱动器获取,甚至从套接字获取时(因为它限制了为每个读取的字节调用操作系统的开销)。
但是,System.in通常连接到键盘。因此,通过缓冲获得的好处几乎没有益处。另一个例子是流是基于字节数组的(例如ByteArrayInputStream)。在任何一种情况下都没有真正的好处。