Я хочу знать, как работает BufferedReader? Почему InputStreamReader используется с ним? Как он отличается от класса Scanner, который также используется для ввода пользователя? Какой из двух лучше?Как работает BufferedReader в java
ответ
Основные отличия
- Сканер используется для разбора лексем из содержимого потока в то время как BufferedReader просто читает поток и не делать каких-либо специальный синтаксический. На самом деле вы можете передать BufferedReader на сканер в качестве источника символов для разбора.
- Другим отличием является размер буфера. В сканере имеется намного меньше буфер, чем BufferedReader (1024 символа в отличие от 8192 символов). Хотя это может показаться довольно заторным, буфер сканера больше, чем достаточно для большинства задач.
- Сканер также скрывает IOExceptions while BufferedReader бросает их немедленно, это дает преимущества и недостатки.
- И, наконец, BufferedReader синхронно, а сканер - нет. Используйте BufferedReader, если вы работаете с несколькими потоками.
Вы могли бы найти это очень легко, отправив его в Google.
Here's хорошее звено.
От Javadoc из BufferedReader
читает текст из символов входного потока, буферные символы таким образом, чтобы обеспечить эффективное чтение символов, массивов и строк.
От Javadoc из Scanner
Простой текстовый сканер, который может анализировать примитивные типы и строки с использованием регулярных выражений. Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу. Затем полученные маркеры могут быть преобразованы в значения разных типов с использованием различных следующих методов.
В основном BufferedReader
читает эффективно символы.
Scanner
Разделите последовательности символов в токенах (аналогично словам) и разрешите доступ к некоторым базовым типам (или классам) (например, int, long, byte, double, String
...). Это вспомогательный класс для анализа ввода, а не для его буферизации.
http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html и http://docs.oracle.com/javase/7/docs/api/java/io /InputStreamReader.html и http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – EpicPandaForce
Если вы хотите узнать; почему бы вам не попытаться это выяснить? Например, вы сами, сделав некоторые предварительные исследования, прежде чем приехать сюда и попросить других людей провести время ** учить ** вас. – GhostCat
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что он не задает конкретного вопроса программирования и не демонстрирует базовый уровень усилий. – MarsAtomic