Java 为什么';t BufferedReader缓冲输入?

Java 为什么';t BufferedReader缓冲输入?,java,io,Java,Io,我运行了以下示例: public static void main(String[] args) throws IOException{ Reader reader = new BufferedReader(new InputStreamReader(System.in)); int character; do{ character = reader.read(); System.out.printl

我运行了以下示例:

public static void main(String[] args) throws IOException{
        Reader reader = new BufferedReader(new InputStreamReader(System.in));
        int character;
        do{
            character = reader.read();
            System.out.println(character);
        } while(character != '\n');
    }
事实上,他对自己的行为感到困惑。我认为BufferedReader的默认缓冲区大小足够容纳1个以上的字符

但是,当我进来的时候

a__NEW_LINE__

它使字符与新行一起打印。为什么?我希望缓冲区没有满,因此应该没有输出。

BufferedReader
尽可能缓冲数据。在这种情况下,没有要缓冲的数据。因此,它会立即返回您输入的内容
BufferedReader
用于文件(
FileInputStream
)等大数据流时非常有用,并且在所有情况下,read方法在幕后返回一个字符,
BufferedReader
读取更多数据(取决于缓冲区大小)从相关的
输入流
并缓存它以提高性能。

重复问题。检查。