2017-03-05 50 views
-2

下面的代码有什么区别?当我使用BufferedInputStream获取用户输入时,会产生什么不同? java

// 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()); 
} 
+1

[Scanner vs. BufferedReader]的可能重复(http://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader) – nullpointer

回答

0

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

0

BufferedInputStream提供了最大的值,因为它用于封装一个流,因为它每次都会预取一个字节的字节,从而导致读取的每个字节开销。例如,从硬盘读取数据时,甚至从套接字读取时(因为它限制了读取每个字节时调用操作系统的开销)。

但是,System.in通常挂在键盘上。所以这种情况下缓冲可以获得很少的好处。另一个例子是如果一个流是基于字节数组的(例如ByteArrayInputStream)。这两种情况都没有真正的好处。

相关问题