यदि आप मेरे जैसे हैं, जब मैंने पहली बार जावा का उपयोग करना शुरू किया था, तो मैं परीक्षण करने के लिए "==" ऑपरेटर का उपयोग करना चाहता था कि क्या दो स्ट्रिंग इंस्टेंसेस समान थे, लेकिन बेहतर या बदतर के लिए, यह जावा में करने का सही तरीका नहीं है।
इस ट्यूटोरियल में, मैं जावा स्ट्रिंग्स की तुलना करने के लिए कई अलग-अलग तरीकों का प्रदर्शन करूँगा, जो उस दृष्टिकोण के साथ शुरू होते हैं जिसका मैं ज्यादातर समय उपयोग करता हूं। इस जावा स्ट्रिंग तुलना ट्यूटोरियल के अंत में मैं यह भी चर्चा करूँगा कि जावा स्ट्रिंग्स की तुलना करते समय "==" ऑपरेटर काम क्यों नहीं करता है।
विकल्प 1: जावा स्ट्रिंग की बराबरी विधि के साथ तुलना
(ज्यादातर समय का शायद 95%) मैं स्ट्रिंग स्ट्रिंग की तुलना जावा स्ट्रिंग वर्ग के समान विधि के साथ करता हूं, जैसे:
if (string1.equals(string2))
यह स्ट्रिंग बराबर पद्धति दो जावा स्ट्रिंग्स को देखती है, और यदि उनमें वर्णों की समान स्ट्रिंग है, तो उन्हें समान माना जाता है।
समान पद्धति के साथ एक त्वरित स्ट्रिंग तुलना उदाहरण पर एक नज़र डालते हुए, यदि निम्नलिखित परीक्षण चलाया गया था, तो दो तारों को समान नहीं माना जाएगा क्योंकि वर्ण बिल्कुल समान नहीं हैं (वर्णों का मामला अलग है):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
लेकिन, जब दो तारों में वर्णों का एक ही तार होता है, तो समान विधि सही हो जाएगी, जैसा कि इस उदाहरण में है:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
विकल्प 2: स्ट्रींग इक्वलाइजेसनकोर विधि के साथ तुलना
कुछ स्ट्रिंग तुलना परीक्षणों में आप अनदेखा करना चाहेंगे कि क्या तार अपरकेस या लोअरकेस हैं। जब आप इस मामले-असंवेदनशील तरीके से समानता के लिए अपने तार का परीक्षण करना चाहते हैं, तो स्ट्रिंग क्लास की समसामयिक पद्धति का उपयोग करें, जैसे:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
विकल्प 3: जावा स्ट्रिंग तुलना विधि के साथ तुलना
जावा स्ट्रिंग्स की तुलना करने के लिए एक तीसरा, कम सामान्य तरीका भी है, और यह स्ट्रिंग क्लास की तुलना विधि के साथ है। यदि दो तार बिल्कुल समान हैं, तो ComparTo विधि 0 (शून्य) का मान लौटा देगी। इस स्ट्रिंग तुलना दृष्टिकोण की तरह दिखने वाला एक त्वरित उदाहरण यहां दिया गया है:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
जब मैं जावा में समानता की इस अवधारणा के बारे में लिख रहा हूं, तो यह ध्यान रखना महत्वपूर्ण है कि जावा भाषा में बेस जावा ऑब्जेक्ट क्लास में एक समान विधि शामिल है। जब भी आप अपनी खुद की वस्तुओं का निर्माण कर रहे हों और आप यह देखना चाहते हों कि आपकी वस्तु के दो उदाहरण "समान" हैं, तो आपको अपनी कक्षा में यह बराबर विधि (जिस तरह जावा भाषा प्रदान करता है) को ओवरराइड (और लागू) करना चाहिए स्ट्रिंग में यह समानता / तुलना व्यवहार समान है)।
आप इस पर एक नज़र रखना चाह सकते हैं ==,। असमान (), तुलना (), और तुलना ()