Почему использование BufferedReader в этом случае?

Технически говоря, наименьшее число с плавающей запятой равно -inf, а максимальное число с плавающей запятой inf:

>>> (float('-inf')            #   negative infinity 
< -1.7976931348623157e+308    #*  smallest float that is not negative infinity 
< -4.9406564584124654e-324    #*  biggest negative float that is not zero
< 0                           #   zero duh
< 4.9406564584124654e-324     #*  smallest positive float that is not zero
< 1.7976931348623157e+308     #*  biggest float that is not positive infinity
< float('inf'))               #   positive infinity
True

числа с * зависят от машины и зависят от реализации.

6
задан Tony Eichelberger 2 June 2009 в 19:24
поделиться

3 ответа

В данном конкретном случае я не вижу пользы. В общем, есть два преимущества:

  • Очень удобный метод readLine () определен только в BufferedReader , а не в Reader (здесь не имеет значения)
  • BufferedReader сокращает количество операций ввода-вывода, когда отдельные вызовы базового считывателя потенциально дороги (т. Е. Меньшее количество коротких вызовов выполняется быстрее, чем множество мелких) - опять же, не имеет значения для StringReader

Вырезать и вставить не удается? 1111299]

19
ответ дан 8 December 2019 в 04:55
поделиться

РЕДАКТИРОВАТЬ: Мой исходный ответ ниже. Приведенный ниже не имеет отношения к в этом случае, поскольку буферизованный читатель оборачивает StringReader, который обертывает String. Таким образом, буферизация не выполняется, а BufferedReader кажется избыточным. Вы могли бы привести аргумент в пользу использования лучших / последовательных практик, но это было бы довольно неубедительно.

Возможно, это результат копирования / вставки или, возможно, слишком большого рефакторинга, управляемого IDE!

BufferedReader будет пытаться читать более оптимальным образом.

То есть он будет читать большие фрагменты данных за один раз (в настраиваемом количестве), а затем делать их доступными по мере необходимости. Это уменьшит количество операций чтения с диска (и т. Д.) За счет некоторого использования памяти.

Цитата из Javadoc:

В общем, каждый запрос на чтение, сделанный из Reader вызывает соответствующее чтение просьба быть сделана из основного символьный или байтовый поток. это поэтому рекомендуется обернуть BufferedReader вокруг любого Reader, чей read () может быть дорогостоящим, например как FileReaders и InputStreamReaders

4
ответ дан 8 December 2019 в 04:55
поделиться

Версия BufferedReader была скопирована из какого-то кода, который раньше читал из FileReader?

1
ответ дан 8 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: