Kelas Java.util.scanner adalah kelas pemindaian teks sederhana yang mem -parsing tipe dan string data dasar. Ini pada dasarnya menggunakan ekspresi reguler untuk membaca tipe data yang berbeda.
Untuk membaca urutan karakter secara efisien, kelas java.io.bufferedReader membaca teks dari aliran input karakter dan buffer karakter.
Berikut adalah perbedaan antara kedua kelas:
When NextLine () digunakan di nextXXX (), apa masalahnya dengan menggunakan kelas pemindai?
Cobalah menebak output dari kode berikut;
// Kode Menggunakan Pemindai ClassiMPort Java.util.Scanner; kelas berbeda {public static void main (string args []) {scanner scn = pemindai baru (system.in); System.out.println ("masukkan integer"); Int a = scn.nextInt (); System.out.println ("Int a = scn.nextInt (); System.out.println (" scn ("scn.nextInt (); System.out.println (" scn); scn.nextline (); System.out.printf ("Anda telah memasukkan:-" + a + "" + "dan nama sebagai" + b);}}Input:
50
Geek
Keluaran:
Masukkan bilangan bulat
Masukkan string
Anda telah masuk:- 50 dan nama sebagai
Mari kita coba menggunakan kelas BufferReader dan gunakan input yang sama
// Kode Menggunakan BufferedReader ClassIMPORT JAVA.IO.*; CLASS Differ {public static void main (string args []) melempar ioException {buferedReader br = new bufferedReader (newInputStreamReader (System.in)); System.out.println ("Enter a integer"); Integer.parseint (br.readline ()); System.out.println ("Masukkan string"); string b = br.readline (); System.out.printf ("Anda telah memasukkan:-" + a + "dan nama sebagai" + b);}} Input:
50
Geek
Keluaran:
Masukkan bilangan bulat
Masukkan string
Anda telah masuk:- 50 dan nama sebagai geek
Di kelas pemindai, jika kita memanggil metode NextLine () setelah metode 7 nextXXX (), metode NextLine () tidak dapat membaca apa pun dari konsol, dan, kursor ini tidak akan memasuki konsol, itu akan melewati langkah ini. Metode nextXXX () adalah metode ini, nextInt (), nextFloat (), nextbyte (), nextShort (), nextDouble (), nextLong (), next ().
Tidak ada masalah seperti itu di kelas BufferReader. Masalah ini hanya terjadi di kelas pemindai, karena metode nextxxx () mengabaikan karakter baru ***, tetapi nextLine () tidak mengabaikannya. Jika kita menggunakan lebih dari satu metode NextLine () antara metode NextXXX () dan metode NextLine (), masalah ini tidak akan terjadi; Karena NextLine () mengkonsumsi karakter garis baru. Anda dapat merujuk pada cara yang benar untuk menulis program ini (http://code.geeksforgeeks.org/cerahd). Masalah ini sama dengan metode scanf () dalam C/C ++ (http://www.geeksforgeeks.org/problem-with-scanf-when-is-sis-fgetsscanf-after-it/) yang mengikuti metode gets ().
Perbedaan Lainnya:
• BufferedReader mendukung sinkronisasi, sementara pemindai tidak. Jika kita berurusan dengan program multithreaded, bufferedreader harus digunakan.
• BufferedReader memiliki memori buffer yang cukup relatif terhadap pemindai.
• Pemindai memiliki sangat sedikit buffer (buffering karakter 1KB) relatif terhadap bufferedReader (buffering byte 8kB), tetapi ini lebih dari cukup.
• BufferedReader sedikit lebih cepat daripada pemindai karena pemindai melakukan penguraian kelas input kelas, sementara bufferedReader hanya membaca urutan karakter.
Di atas adalah perbedaan antara kelas pemindai dan kelas buferreader di Java yang diperkenalkan kepada Anda oleh editor (sangat rinci). Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!