La clase java.util.scanner es una clase de escaneo de texto simple que analiza los tipos y cadenas de datos básicos. Esencialmente utiliza expresiones regulares para leer diferentes tipos de datos.
Para leer las secuencias de caracteres de manera eficiente, la clase Java.io.BufferedReader lee el texto de las transmisiones de entrada de caracteres y los búferes de caracteres.
Aquí están las diferencias entre las dos clases:
Cuando NextLine () se usa en Nextxxx (), ¿cuál es el problema con el uso de la clase de escáner?
Intente adivinar la salida del siguiente código;
// código utilizando el escáner classImport java.util.scanner; class diferir {public static void main (string args []) {scanner scn = new Scanner (System.in); System.out.println ("Ingrese un entero"); int a = scn.nextInt (); System.println ("Enter a String"); String B = String B = scn.nextline (); system.out.printf ("ha ingresado:-" + a + "" + "y nombre como" + b);}}Aporte:
50
Adicto
Producción:
Ingrese un entero
Ingrese una cadena
Has ingresado:- 50 y nombre como
Intentemos usar la clase BufferReader y usemos la misma entrada
// El código utilizando BufferedReader classImport java.io.*; Class diferir {public static void main (string args []) lanza ioexception {bufferedReader br = new BufferedReader (newInputStreamReader (System.in)); System.out.println ("Enter un intreger"); int a = intenger.parseInt (br.readline ();); una cadena "); cadena b = br.readline (); system.out.printf (" Ha ingresado:- " + a +" y nombre como " + b);}} Aporte:
50
Adicto
Producción:
Ingrese un entero
Ingrese una cadena
ha entrado:- 50 y nombre como geek
En la clase de escáner, si llamamos al método NextLine () después de cualquier método 7 Nextxxxx (), el método NextLine () no puede leer nada de la consola y, este cursor no ingresará a la consola, saltará este paso. Los métodos nextxxx () son estos métodos, nextInt (), nextfloat (), nextbyte (), nextShort (), nextDouble (), nextLong (), next ().
No existe tal problema en la clase BufferReader. Este problema solo ocurre en la clase de escáner, porque el método NextXxxx () ignora el carácter nuevo ***, pero NextLine () no lo ignora. Si usamos más de un método NextLine () entre el método Nextxxxx () y el método NextLine (), este problema no ocurrirá; Porque NextLine () consume caracteres Newline. Puede consultar la forma correcta de escribir este programa (http://code.geeksforgeeks.org/cerahd). Este problema es el mismo que el método scanf () en c/c ++ (http://www.geeksforgeeks.org/problem-with-scanf-when-there-is-fgetsgetsscanf-after-it/) que sigue el método gets ().
Otras diferencias:
• BufferedReader admite la sincronización, mientras que Scanner no. Si tratamos con programas multiproceso, se debe utilizar el Reader Buffered.
• BufferedReader tiene suficiente memoria de búfer en relación con el escáner.
• El escáner tiene muy pocos tampones (amortiguación de caracteres de 1 kb) en relación con BufferedReader (tamponado de bytes de 8 kb), pero esto es más que suficiente.
• BufferedReader es un poco más rápido que el escáner porque el escáner realiza el análisis de la clase de los datos de entrada, mientras que BufferedReader simplemente lee la secuencia de caracteres.
Lo anterior es la diferencia entre la clase de escáner y la clase BufferReader en Java presentada por el editor (muy detallada). Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!