1. तार की तुलना करना
यह पूरी तरह ठीक है और अच्छा है। लेकिन आप देख सकते हैं कि s1
और s2
तार वास्तव में समान हैं, जिसका अर्थ है कि उनमें समान पाठ है। String
तारों की तुलना करते समय, आप प्रोग्राम को वस्तुओं के पते पर नहीं, बल्कि उनकी सामग्री पर कैसे देखते हैं ?
इसमें हमारी मदद करने के लिए, Java की String
क्लास में equals
मेथड है। इसे कॉल करना ऐसा दिखता है:
string1.equals(string2)
true
यदि तार समान हैं, और false
यदि वे समान नहीं हैं, तो यह विधि वापस आ जाती है ।
उदाहरण:
कोड | टिप्पणी |
---|---|
|
|
और ज्यादा उदाहरण:
कोड | व्याख्या |
---|---|
|
false |
|
true |
|
true |
|
true |
2. केस-असंवेदनशील स्ट्रिंग तुलना
पिछले उदाहरण में, आपने देखा कि तुलना का परिणाम है । दरअसल, तार बराबर नहीं हैं। लेकिन..."Hello".equals("HELLO")
false
जाहिर है, तार बराबर नहीं हैं। उस ने कहा, उनकी सामग्री में समान अक्षर हैं और केवल अक्षरों के मामले में भिन्न है। क्या उनकी तुलना करने और अक्षरों के मामले को नजरअंदाज करने का कोई तरीका है? यानी कि पैदावार ?"Hello".equals("HELLO")
true
और इस सवाल का जवाब हां है। जावा में, String
प्रकार की एक और विशेष विधि है: equalsIgnoreCase
. इसे कॉल करना ऐसा दिखता है:
string1.equalsIgnoreCase(string2)
विधि का नाम मोटे तौर पर तुलना के रूप में अनुवाद करता है लेकिन मामले को अनदेखा करता है । विधि के नाम के अक्षरों में दो लंबवत रेखाएं शामिल हैं: पहला लोअरकेस है L
, और दूसरा अपरकेस है i
। इससे आप भ्रमित न हों।
उदाहरण:
कोड | टिप्पणी |
---|---|
|
|
3. स्ट्रिंग तुलना का उदाहरण
आइए केवल एक सरल उदाहरण दें: मान लीजिए कि आपको कीबोर्ड से दो पंक्तियों को दर्ज करने और यह निर्धारित करने की आवश्यकता है कि क्या वे समान हैं। कोड इस तरह दिखेगा:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. स्ट्रिंग तुलना की एक दिलचस्प बारीकियाँ
एक महत्वपूर्ण सूक्ष्मता है जिसके बारे में आपको अवगत होना चाहिए।
यदि जावा कंपाइलर आपके कोड (विशेष रूप से आपके कोड में) में कई समान स्ट्रिंग्स पाता है, तो यह मेमोरी को बचाने के लिए उनके लिए केवल एक ही ऑब्जेक्ट बनाएगा।
String text = "This is a very important message";
String message = "This is a very important message";
और परिणामस्वरूप स्मृति में क्या होगा:
और अगर आप text == message
यहां तुलना करते हैं, तो आपको मिलता है true
। तो इससे हैरान मत होइए।
अगर किसी कारण से आपको वास्तव में संदर्भों को अलग करने की आवश्यकता है, तो आप इसे लिख सकते हैं:
String text = "This is a very important message";
String message = new String ("This is a very important message");
या यह:
String text = "This is a very important message";
String message = new String (text);
इन दोनों मामलों में, text
और message
चर अलग-अलग वस्तुओं को इंगित करते हैं जिनमें एक ही पाठ होता है।
GO TO FULL VERSION