A classe java.util.scanner é uma classe simples de digitalização de texto que analisa tipos e strings de dados básicos. Ele essencialmente usa expressões regulares para ler diferentes tipos de dados.
Para ler as seqüências de caracteres com eficiência, a classe Java.io.BufferedReader lê texto de fluxos de entrada de caracteres e buffers de caracteres.
Aqui estão as diferenças entre as duas classes:
Quando o NextLine () é usado em Nextxxx (), qual é o problema de usar a classe Scanner?
Tente adivinhar a saída do código a seguir;
/ Code usando o scanner classimport java.util.scanner; classe difere {public static void main (string args []) {scanner scn = new scanner (system.in); system.out.println ("digite um número inteiro"); int a = scn.next (); sistema.out.prIntln (" scn.nextLine (); System.out.printf ("Você entrou:-" + a + "" + "e nome como" + b);}}Entrada:
50
Geek
Saída:
Digite um número inteiro
Digite uma string
Você entrou:- 50 e nome como
Vamos tentar usar a classe BufferReader e usar a mesma entrada
/ Code usando o bufferredader classimport java.io.*; Classe diferem {public static void main (string args []) lança ioexception {bufferredreader Br = newbockredReader (newInputStreamReader (system.in); system.out.println ("enter um integger"); int a = intereger); uma string "); string b = br.readline (); system.out.printf (" você entrou:- " + a +" e nome como " + b);}} Entrada:
50
Geek
Saída:
Digite um número inteiro
Digite uma string
você entrou:- 50 e nome como geek
Na classe Scanner, se chamarmos o método NextLine () após qualquer método 7 Nextxxx (), o método NextLine () não poderá ler nada do console e, esse cursor não entrará no console, ele pulará esta etapa. Os métodos seguintesxxx () são esses métodos, nextInt (), nextfloat (), nextByte (), nextShort (), nextDouble (), nextlong (), next ().
Não existe esse problema na classe BufferReader. Esse problema ocorre apenas na classe Scanner, porque o método Nextxxx () ignora o caractere da nova linha ***, mas o nextline () não o ignora. Se usarmos mais de um método NextLine () entre o método Nextxxx () e o método NextLine (), esse problema não ocorrerá; porque o nextline () consome caracteres novos. Você pode consultar a maneira correta de escrever este programa (http://code.geeksforgeeks.org/cerahd). Esse problema é o mesmo que o método scanf () em c/c ++ (http://www.geeksforgeeks.org/problem-with-scanf-when-there-is-fggetsgetsscanf-after-it/) que segue o método Get ().
Outras diferenças:
• O BufferredReader suporta a sincronização, enquanto o scanner não. Se lidarmos com programas multithread, o BufferErader deve ser usado.
• O BufferredReader possui memória de buffer suficiente em relação ao scanner.
• O scanner possui muito poucos buffers (buffer de caracteres de 1kb) em relação ao BufferErader (buffer de 8kb de bytes), mas isso é mais do que suficiente.
• BufferredReader é um pouco mais rápido que o scanner porque o scanner executa a análise de classe de dados de entrada, enquanto o BufferredReader simplesmente lê a sequência de caracteres.
O exposto acima é a diferença entre a classe Scanner e a classe BufferReader em Java apresentada a você pelo editor (muito detalhado). Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!