La classe java.util.scanner est une classe de balayage de texte simple qui analyse les types et chaînes de données de base. Il utilise essentiellement des expressions régulières pour lire différents types de données.
Afin de lire efficacement les séquences de caractères, la classe Java.io.BufferedReader lit le texte à partir de flux d'entrée de caractères et de tampons de caractères.
Voici les différences entre les deux classes:
Lorsque NextLine () est utilisé dans NextXxx (), quel est le problème avec l'utilisation de la classe de scanner?
Essayez de deviner la sortie du code suivant;
// Code à l'aide du scanner classimport java.util.scanner; class Differiel {public static void main (String args []) {Scanner Scn = new Scanner (System.in); System.out.println ("Entrez un entier"); int a = scn.nextint (); System.out.println ("entrez une chaîne"); String b = Scn.NextLine (); System.out.printf ("vous avez entré: -" + a + "" + "et nom comme" + b);}}Saisir:
50
Geek
Sortir:
Entrez un entier
Entrez une chaîne
Vous êtes entré: - 50 et nom comme
Essayons d'utiliser la classe BufferRereder et d'utiliser la même entrée
// Code à l'aide de BufferedReader classimport java.io. *; Class Différe {public static void main (String args []) lève ioException {buttereDreader br = new buttereDeader (newInputStreamReader (System.in)); System.out.println ("Entre un Intger"); int a = Integer.ParseInt (br.readline ()); System.out.println ("Entrer une chaîne"); String b = br.readline (); System.out.printf ("vous avez entré: -" + a + "et nom en" + b);}} Saisir:
50
Geek
Sortir:
Entrez un entier
Entrez une chaîne
Vous êtes entré: - 50 et nom en tant que geek
Dans la classe de scanner, si nous appelons la méthode NextLine () après 7 méthodes NextXxx (), la méthode NextLine () ne peut rien lire de la console et, ce curseur n'entrera pas la console, elle sautera cette étape. Les méthodes NextXxx () sont ces méthodes, NextInt (), NextFloat (), NextByte (), NextShort (), NextDouble (), NextLong (), Next ().
Il n'y a pas de tel problème dans la classe BufferReader. Ce problème ne se produit que dans la classe de scanner, car la méthode NextXxx () ignore le caractère Newline ***, mais NextLine () ne l'ignore pas. Si nous utilisons plus d'une méthode NextLine () entre la méthode NextXxx () et la méthode NextLine (), ce problème ne se produira pas; Parce que NextLine () consomme de nouvelles caractères. Vous pouvez vous référer à la bonne façon d'écrire ce programme (http://code.geeksforgeeks.org/cerahd). Ce problème est le même que la méthode Scanf () en C / C ++ (http://www.geeksforgeeks.org/problem-with-scanf-when-there-is-fgetsgetsscanf-ater-it/) qui suit la méthode get ().
Autres différences:
• BufferedReader prend en charge la synchronisation, contrairement au scanner. Si nous traitons avec des programmes multithread, le BufferedReader doit être utilisé.
• BufferedReader a une mémoire tampon suffisante par rapport au scanner.
• Le scanner a très peu de tampons (tampon de caractères de 1kb) par rapport à BufferedReader (tampon d'octets de 8 kb), mais c'est plus que suffisant.
• BufferedReader est un peu plus rapide que le scanner car le scanner effectue l'analyse de classe des données d'entrée, tandis que BufferedReader lit simplement la séquence des caractères.
Ce qui précède est la différence entre la classe de scanner et la classe BufferReader dans Java présentée par l'éditeur (très détaillé). J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!