BufferedReaderでコンソールから文字入力方法を調べていたらScannerでの入力方法も気になってきたので2つの違いがわかればと比較してみたいと思います。
参考サイト:Difference between Scanner and BufferReader Class in Java
BufferedReaderでコンソールから文字入力
※ eclipseでは文字入力は英語で入力するか日本語の場合はきちんと改行された位置から文字を入力しないと文字が繰り返されておかしなことになります。Macだからかも?Scannerも同様です。
Scannerでコンソールから文字入力
Scannerのほうが比較的読みやすいコードですね。
さほど違いを感じませんでした。
ScannerとBufferedReaderの違い
コードの違いはScannerのほうが簡単な印象ですが、その他違いを簡単にまとめます。
- 処理スピードはBufferedReaderのほうが早い
- プリミティブデータ型を直接読み取るならScanner
- BufferedReaderは文字をバッファリングして、文字、配列、および行を読み取るのが得意
- バッファはBufferedReader (8192 chars)、Scannerは(1024 chars)
- BufferedReaderはスレッドセーフだがScannerはスレッドセーフではない
- Scsnnerは正規表現を使用してプリミティブ型および文字列の構文解析が可能
サンプル:Scanner s = new Scanner(input).useDelimiter(“\sfish\s”);
参考元:Scanner vs. BufferedReader
それぞれのクセを理解してうまく利用できるようになりたいものです。