Scanner और BufferedReader दोनों क्लासेज़ एक्सटर्नल सिस्टम से इनपुट पढ़ने के लिए उपयोग की जाती हैं। Scanner का उपयोग आमतौर पर तब किया जाता है जब हम जानते हैं कि इनपुट स्ट्रिंग टाइप का है या प्रिमिटिव टाइप्स का और BufferedReader का उपयोग कैरेक्टर स्ट्रीम से टेक्स्ट पढ़ने के लिए किया जाता है जबकि कुशल पढ़ने के लिए कैरेक्टर्स को बफर करता है। Scanner क्लास और BufferedReader क्लास के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
| क्र. सं. | मुख्य बिंदु | Scanner Class | BufferedReader Class |
|---|---|---|---|
| 1 | सिंक्रोनस | Scanner प्रकृति में सिंक्रोनस नहीं है और केवल सिंगल-थ्रेडेड केस में उपयोग किया जाना चाहिए। | BufferedReader प्रकृति में सिंक्रोनस है। मल्टीथ्रेडिंग वातावरण में, BufferedReader का उपयोग किया जाना चाहिए। |
| 2 | बफर मेमोरी | Scanner के पास 1 KB कैरेक्टर बफर का छोटा बफर होता है। | BufferedReader के पास Scanner की तुलना में 8KB बाइट बफर का बड़ा बफर होता है। |
| 3 | प्रोसेसिंग गति | Scanner थोड़ा धीमा है क्योंकि इसे डेटा को पार्स करने की भी आवश्यकता होती है। | BufferedReader Scanner से तेज़ है क्योंकि यह केवल कैरेक्टर स्ट्रीम पढ़ता है। |
| 4 | मेथड्स | Scanner में nextInt(), nextShort() जैसे मेथड्स होते हैं। | BufferedReader में parseInt(), parseShort() जैसे मेथड्स होते हैं। |
| 5 | लाइन पढ़ें | Scanner में लाइन पढ़ने के लिए nextLine() मेथड होता है। | BufferedReader में लाइन पढ़ने के लिए readLine() मेथड होता है। |
Scanner बनाम BufferedReader का उदाहरण
JavaTester.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class JavaTester {
public static void main(String args[]) throws NumberFormatException, IOException {
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter an number:");
int a = Integer.parseInt(bufferReader.readLine());
System.out.printf("You entered: " + a);
Scanner scanner = new Scanner(System.in);
System.out.println("\nEnter an number:");
a = scanner.nextInt();
System.out.printf("You entered: " + a);
}
}आउटपुट
Enter an number: 1 You entered: 1 Enter an number: 2 You entered: 2