Есть ли у Scanner собственный буфер для чтения?

BufferedReader и BufferedInputStream имеют свои собственные буферы для чтения. Является ли наличие буфера причиной того, что они могут читать строку за раз?

Scanner тоже может читать построчно. Но это не обязательно работает с BufferedReader и BufferedInputStream. Есть ли у него собственный буфер для чтения строки за раз?

Спасибо.

Как вы думаете, почему классу нужен буфер для чтения строки? Буфер используется для минимизации количества аппаратных обращений, а не для чтения строки или нет.

Tom 18.05.2019 14:33

Если не использовать буфер, как он может собирать символы в строку?

user10082400 18.05.2019 15:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документы Oracle, в частности из этой строки:

A scanner can read text from any object which implements the Readable interface. If an invocation of the underlying readable's Readable.read(java.nio.CharBuffer) method throws an IOException then the scanner assumes that the end of the input has been reached. The most recent IOException thrown by the underlying readable can be retrieved via the ioException() method.

Похоже, что у Scanner нет собственного буфера. Он использует буфер базового объекта (который реализует Readable) и использует регулярные выражения для синтаксического анализа.

Спасибо. «Он использует буфер из базового объекта (который реализует Readable)». Если базовый объект не является объектом BufferedReader, то Scannere не будет использовать какой-либо буфер пользовательского пространства?

user10082400 18.05.2019 15:03

Правильный. Он токенизирует и анализирует строку напрямую.

Susmit Agrawal 18.05.2019 15:06

Другие вопросы по теме