Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างคลาส Scanner และ BufferReader ใน Java


Scanner และ BufferReader ทั้งสองคลาสใช้ในการอ่านอินพุตจากระบบภายนอก โดยปกติสแกนเนอร์จะใช้เมื่อเราทราบว่าอินพุตเป็นสตริงประเภทหรือประเภทดั้งเดิม และ BufferReader ใช้เพื่ออ่านข้อความจากสตรีมอักขระในขณะที่บัฟเฟอร์อักขระเพื่อการอ่านอักขระอย่างมีประสิทธิภาพ ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างคลาส Scanner และคลาส BufferReader

ซีเนียร์ เลขที่
Key
คลาสเครื่องสแกนเนอร์
BufferReader Class
1
ซิงโครนัส
Scanner ไม่ซิงโครไนซ์ในธรรมชาติ และควรใช้เฉพาะในกรณีเธรดเดียวเท่านั้น
BufferReader มีความซิงโครไนซ์ในธรรมชาติ ระหว่างสภาวะแวดล้อมแบบมัลติเธรด ควรใช้ BufferReader
2
หน่วยความจำบัฟเฟอร์
เครื่องสแกนเนอร์มีบัฟเฟอร์ขนาดเล็ก 1 KB ถ่านบัฟเฟอร์
BufferReader มีบัฟเฟอร์ขนาดใหญ่ 8KB byte Buffer เมื่อเปรียบเทียบกับ Scanner
3
ความเร็วในการประมวลผล
เครื่องสแกนทำงานช้าลงเล็กน้อยเนื่องจากจำเป็นต้องแยกวิเคราะห์ข้อมูลด้วย
BufferReader เร็วกว่า Scanner เนื่องจากอ่านเฉพาะสตรีมอักขระ
4
วิธีการ
Scanner มีเมธอดเช่น nextInt(), nextShort() เป็นต้น
BufferReader มีเมธอดเช่น parseInt(), parseShort() เป็นต้น
5
อ่านบรรทัด
Scanner มีเมธอด nextLine() เพื่ออ่านบรรทัด
BufferReader มีเมธอด readLine() เพื่ออ่านบรรทัด

ตัวอย่างเครื่องสแกนเนอร์เทียบกับ BufferReader

JavaTester.java

<ก่อนหน้า> นำเข้า java.io.BufferedReader; นำเข้า java.io.IOException; นำเข้า java.io.InputStreamReader นำเข้า java.util.Scanner; JavaTester คลาสสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่น NumberFormatException, IOException { BufferedReader bufferReader =BufferedReader ใหม่ (ใหม่ InputStreamReader (System.in)); System.out.println("ป้อนหมายเลข:"); int a =Integer.parseInt(bufferReader.readLine()); System.out.printf("คุณป้อน:" + a); สแกนเนอร์สแกนเนอร์ =สแกนเนอร์ใหม่ (System.in); System.out.println("\nป้อนหมายเลข:"); a =scanner.nextInt(); System.out.printf("คุณป้อน:" + a); }}

ผลลัพธ์

ป้อนตัวเลข:1คุณป้อน:1ป้อนหมายเลข:2คุณป้อน:2