BufferedReader улучшает производительность чтения символов за счёт буферизации. 13
Обычные ридеры за каждым чтением символов обращаются к источнику (например, файлу), что является относительно затратным по времени процессом. 1 Например, если нужно посимвольно прочитать файл, то каждый вызов метода read(), читающий один отдельный символ, будет порождать обращение к файлу. 1
BufferedReader работает иначе: он обращается к источнику, считывает оттуда сразу много символов (по умолчанию 8192), занося их в определённый массив. 1 При следующих вызовах методов read() или readLine() символы будут читаться из этого массива, что происходит быстрее. 1
Таким образом, буферизация позволяет сократить количество обращений к диску или сети, загрузив данные в буфер в памяти и читая их уже оттуда. 1