Java Programming

जावा में स्ट्रिंग तुलना: एक व्यापक गाइड

Spread the love

जावा स्ट्रिंग्स की तुलना करने के कई तरीके प्रदान करता है, प्रत्येक की अपनी ताकत और कमजोरियाँ हैं। सबसे अच्छी विधि इस बात पर निर्भर करती है कि आपको केस-सेंसिटिव तुलना की आवश्यकता है, समानता की जाँच कर रहे हैं, या लेक्सिकोग्राफिकल क्रम निर्धारित करने की आवश्यकता है। यह गाइड सबसे सामान्य तरीकों को स्पष्ट करता है।

विषयसूची

  1. compareTo() विधि का उपयोग करना
  2. == ऑपरेटर
  3. equals() विधि
  4. केस संवेदनशीलता और equalsIgnoreCase()
  5. contentEquals() विधि

1. compareTo() से स्ट्रिंग्स की तुलना करना

compareTo() विधि एक लेक्सिकोग्राफिकल तुलना प्रदान करती है। यह देता है:

  • 0: यदि स्ट्रिंग्स समान हैं।
  • ऋणात्मक मान: यदि इनवोकिंग स्ट्रिंग तर्क स्ट्रिंग से लेक्सिकोग्राफिकल रूप से पहले आती है।
  • धनात्मक मान: यदि इनवोकिंग स्ट्रिंग तर्क स्ट्रिंग के बाद लेक्सिकोग्राफिकल रूप से आती है।

यह तुलना केस-सेंसिटिव है; अपरकेस अक्षर लोअरकेस अक्षरों से पहले आते हैं।


String str1 = "apple";
String str2 = "banana";
String str3 = "Apple";

int result1 = str1.compareTo(str2); // result1 ऋणात्मक होगा
int result2 = str1.compareTo(str3); // result2 ऋणात्मक होगा (केस-सेंसिटिव)
int result3 = str1.compareTo("apple"); // result3 0 होगा

2. == ऑपरेटर

== ऑपरेटर संदर्भों की तुलना करता है, स्ट्रिंग सामग्री की नहीं। यह जाँच करता है कि क्या दो स्ट्रिंग चर एक ही मेमोरी स्थान की ओर इशारा करते हैं। स्ट्रिंग मानों की तुलना करने के लिए यह आमतौर पर वांछित व्यवहार नहीं है।


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1 == str2); // अक्सर सच होता है स्ट्रिंग इंटरनिंग के कारण
System.out.println(str1 == str3); // असत्य (अलग ऑब्जेक्ट्स)

जबकि str1 == str2 अक्सर जावा के स्ट्रिंग इंटरनिंग के कारण true देता है, इस पर भरोसा करना अविश्वसनीय है। सामग्री तुलना के लिए हमेशा equals() का उपयोग करें।

3. equals() विधि

स्ट्रिंग सामग्री की तुलना करने के लिए equals() विधि अनुशंसित दृष्टिकोण है। यह वर्णों की तुलना करता है, मेमोरी स्थानों की अवहेलना करता है।


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1.equals(str2)); // सत्य
System.out.println(str1.equals(str3)); // सत्य

4. केस संवेदनशीलता और equalsIgnoreCase()

equals() केस-सेंसिटिव है। “hello” और “Hello” को अलग माना जाता है। केस-असेंसिटिव तुलना के लिए, equalsIgnoreCase() का उपयोग करें।


String str1 = "hello";
String str2 = "Hello";

System.out.println(str1.equals(str2)); // असत्य
System.out.println(str1.equalsIgnoreCase(str2)); // सत्य

5. contentEquals() विधि

contentEquals() equals() के समान है, लेकिन यह स्ट्रिंग की अन्य CharSequence ऑब्जेक्ट्स (जैसे StringBuffer या StringBuilder) के साथ तुलना करने की अनुमति देता है।


String str1 = "hello";
StringBuffer str2 = new StringBuffer("hello");

System.out.println(str1.contentEquals(str2)); // सत्य

यह लचीलापन प्रदान करता है, लेकिन साधारण स्ट्रिंग-टू-स्ट्रिंग तुलना के लिए, पठनीयता के लिए equals() को प्राथमिकता दी जाती है।

संक्षेप में, अपनी आवश्यकताओं के आधार पर उपयुक्त विधि का चयन करें: लेक्सिकोग्राफिकल क्रम के लिए compareTo(), केस-सेंसिटिव सामग्री समानता के लिए equals(), केस-असेंसिटिव समानता के लिए equalsIgnoreCase(), और अन्य CharSequence ऑब्जेक्ट्स के साथ स्ट्रिंग्स की तुलना करने के लिए contentEquals()। स्ट्रिंग सामग्री की तुलना करने के लिए == का उपयोग करने से बचें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *