2.那是内部类。
3.BufferedReader is a filter reader class. 
That is, it wraps another reader and reading from it is like reading from the reader it wraps, except
that it changes something.
In the case of BufferedReader, it reads in large chunks and then you can retrieve its data in smaller
bits. To use it to read from System.in, you first need a reader to wrap. You can bridge from an
input stream (which System.in is) to a reader by using an InputStreamReader.
Then wrap that in a BufferedReader as follows:
BufferedReader input = 
new BufferedReader(new InputStreamReader(System.in));
Now you can call methods of BufferedReader to read from standard input. Generally, you create a
BufferedReader to be able to call the readLine() method. That isn't BufferedReader's main intended
use -- the main intended use is performance -- but you don't generally care too awfully much about
performance of reads from the console. So call readLine to get a line of input, which will be null on
end of stream (user presses Ctrl-D on UNIX or a file was redirected in and is done).