Подтвердить что ты не робот

BufferedReader vs Console vs Scanner

Привет, я новичок в Java, и я хотел бы знать, что является лучшим выбором для чтения пользователя. Вход в консоль, насколько я знаю, есть 3 способа сделать это:

  • Console console = System.console();
  • BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  • Scanner reader = new Scanner(System.in);

Какой из них выбрать? Почему этот, а не другие?

4b9b3361

Ответ 1

BufferedReader

  • Так как Java 1.1
  • Выбрасывает проверенные исключения
  • Может читать символы, char массивы и строки
  • Fast

Сканер

  • Так как Java 1.5
  • Не выбрасывает проверенные исключения
  • Может читать строки, маркеры с разделителями в виде пробелов, токены с разделителями и номерами
  • Сложно читать отдельные символы

Консоль

  • Так как Java 1.6
  • Не выбрасывает проверенные исключения
  • Можно читать строки
  • Базовый читатель может читать символы и char массивы (останавливается при линейных границах)
  • Не всегда доступно (например, Eclipse)
  • Может читать пароли (т.е. читать без отображения символов)

Рекомендация: Сканер

Методы чтения чисел очень полезны. Исключения не отмечены, поэтому вам не нужно писать блоки try/catch для шаблонов.

Ответ 2

рядом с ними вы также можете использовать datainputstream и т.д.

Now BufferedReader Прочитайте текст из потока ввода символов, буферизируя символы, чтобы обеспечить эффективное считывание символов, массивов и строк. Можно указать размер буфера или использовать размер по умолчанию. Значение по умолчанию достаточно велико для большинства целей.

Сканер представляет собой простой текстовый сканер, который может анализировать примитивные типы и строки с использованием регулярных выражений. Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу. Затем полученные маркеры могут быть преобразованы в значения разных типов с использованием различных следующих методов. Сканер используется для разбора токенов из содержимого потока, в то время как BufferedReader просто считывает поток и не выполняет специальный синтаксический анализ.

также проверьте приведенную ниже ссылку, это наверняка поможет вам.

http://www.javawebtips.com/50474/

Ответ 3

Класс консоли пытается реализовать независимый от платформы способ обработки с помощью ввода в консоль. У всех ОС есть консоль в любом случае, но они все равно различны в реализации. Таким образом, класс Console предоставляет Java-платформу независимого класса времени выполнения для доступа к таким словам, как ввод пароля и т.д.

Сканер используется для разбора токенов из содержимого потока, в то время как BufferedReader просто считывает поток и не выполняет специальный синтаксический анализ.