Класс java.util.scanner - это простой класс текстового сканирования, который анализирует основные типы данных и строки. По сути, он использует регулярные выражения для чтения различных типов данных.
Чтобы эффективно читать последовательности символов, класс Java.io.io.bufferedReader считывает текст из входных потоков символов и буферов символов.
Вот различия между двумя классами:
Когда NextLine () используется в NextXXX (), в чем проблема с использованием класса сканера?
Попробуйте угадать вывод следующего кода;
// код с использованием сканера classimport java.util.scanner; class отличается {public static void main (string args []) {scanner scn = new Scanner (System.in); System.out.println («Введите целое число»); int a = scn.nextint (); scn.nextline (); System.out.printf («Вы ввели:-» + a + "" + "и имя как" + b);}}Вход:
50
Гик
Выход:
Введите целое число
Введите строку
Вы ввели:- 50 и название как
Попробуем использовать класс BufferReader и использовать тот же вход
// код с использованием BufferedReader classimport java.io.*; Class отличается {public static void main (string args []), бросает ioException {bufferedReader br = new BufferedReader (newInputStreamReader (System.in); System.out.println («Введите Integer»); int anteger.parseint (br.R.Readlin); string "); string b = br.readline (); System.out.printf (" Вы ввели:- " + a +" и имя как " + b);}} Вход:
50
Гик
Выход:
Введите целое число
Введите строку
вы ввели:- 50 и название как гик
В классе сканера, если мы вызовым метод NextLine () после любых 7 методов NextXXX (), метод NextLine () не может ничего читать из консоли, и этот курсор не вступит в консоль, он пропустит этот шаг. Следующими методами () являются этими методами, NextInt (), NextFloat (), NextByte (), Nextshort (), nextDouble (), nextlong (), next ().
Там нет такой проблемы в классе BufferReader. Эта проблема возникает только в классе сканера, потому что метод Nextxxx () игнорирует символ Newline ***, но Nextline () не игнорирует его. Если мы используем более одного метода NextLine () между методом NextXXX () и методом NextLine (), эта проблема не возникнет; Потому что NextLine () потребляет персонажей Newline. Вы можете ссылаться на правильный способ написать эту программу (http://code.geeksforgeeks.org/cerahd). Эта проблема такая же, как и метод scanf () в C/C ++ (http://www.geeksforgeeks.org/problem-with-canf-when-se-is-fgetsgetsscanf-it-it/), который следует за методом get ().
Другие различия:
• BufferedReader поддерживает синхронизацию, а сканер нет. Если мы имеем дело с многопоточными программами, следует использовать BufferedReader.
• BufferedReader имеет достаточное количество буферных памяти по сравнению с сканером.
• Сканер имеет очень мало буферов (буферизация символов 1 кб) по сравнению с буферизатором (буферизация байтов 8 КБ), но этого более чем достаточно.
• BufferedReader немного быстрее, чем сканер, потому что сканер выполняет анализ входных данных класса, в то время как BufferedReader просто читает последовательность символов.
Приведенное выше разница между классом сканера и классом BufferReader в Java, представленной вам редактором (очень подробно). Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!