通常Javaではこのように書くことで、コンソール入力することができます
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String someValue = br.readLine();
Systsm.inとは
Systsm.inはSystemクラスの中のメンバ変数inを表しています。標準入力や標準出力のためのオブジェクトはあらかじめ生成されていて、それがSystem.inやSystem.outに代入されています。
したがって、特にnewで入出力用のオブジェクト(インスタンス)を生成しなくても、System.out.println()などのメソッドを使うことができるのです
System.inが扱うのは、入力される生のバイト列です。日本語も正しく処理されません。
Windows上では日本語はJavaの内部ではUnicodeであるため、入出力のところで変換しなければなりません。
それを変換をしてくれるのが、InputStreamReaderクラスです。
1行目の、
InputStreamReader isr = new InputStreamReader(System.in);
によって、オブジェクトisrは日本語の変換をしてくれます。
※この時点ではisrはバイト列です。
1行単位に読むには、
BufferedReader br = new BufferedReader(isr);
BufferedReaderクラスのオブジェクトに繋ぐ必要があります。
このオブジェクトはバッファ機能を持っているので、1行単位に読み込みができます。
String someValue = br.readLine();
br.readLine()は、入力された1行分を日本語変換して返してくれます。
このようにして、Stringクラスのbufの中に、1行分の文字列を入れることができるのです。