我运行了以下示例:
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__
它会使字符与新行一起打印。为什么?我预计缓冲区不满,因此应该没有输出。
答案 0 :(得分:3)
BufferedReader
尽可能缓冲数据。在这种情况下,没有数据要缓冲。因此,它会立即返回您输入的内容。 BufferedReader
在与大型流(例如文件FileInputStream
)一起使用时很有用,并且在所有情况下,read方法在场景后面返回一个字符,BufferedReader
读取更多数据(取决于来自相关InputStream
的缓冲区大小)并缓存它以提高性能。