2017-03-05 5 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は、一度に1ブロックずつバイトをプリフェッチするため、フェッチされた各バイトのオーバーヘッドを発生させるストリームをラッパーするために使用されるときに最大の値を提供します。たとえば、ハードドライブから取り出したり、ソケットから取り出したりする場合(オペレーティングシステムを呼び出す際のオーバーヘッドがバイトごとに読み込まれるため)

ただし、System.inは通常、キーボードに接続されます。だからこそ、バッファリングによって得られる利益はほとんどないのです。もう1つの例は、ストリームがバイト配列ベースの場合(ByteArrayInputStreamなど)です。どちらの場合でも本当のメリットはありません。

関連する問題