Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में String तुलना में महारत: Equals, equalsIgnoreCase, और '==' से बचना

स्ट्रिंग्स की समानता के लिए तुलना करने के लिए, आपको String ऑब्जेक्ट के equals या equalsIgnoreCase मेथड्स का उपयोग करना चाहिए। हम यह भी देखेंगे कि हमें स्ट्रिंग्स की तुलना के लिए == ऑपरेटर का उपयोग क्यों नहीं करना चाहिए।

equals() मेथड के साथ स्ट्रिंग्स की तुलना

यदि हमें Java में दो स्ट्रिंग्स की तुलना करने की आवश्यकता है और स्ट्रिंग्स के केसिंग की भी परवाह है, तो हम equals() मेथड का उपयोग कर सकते हैं।

उदाहरण के लिए, निम्न स्निपेट यह निर्धारित करेगा कि String के दो इंस्टेंस सभी वर्णों सहित केसिंग पर समान हैं:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test" + 123;
        String thirdString = "TEST123";
        if (firstString.equals(secondString)) {
            System.out.println("first and second strings are equal");
        }
        if (firstString.equals(thirdString)) {
            System.out.println("first and third string are equal");
        }
    }
}

आउटपुट:

first and second strings are equal

नोट: दूसरा प्रिंट स्टेटमेंट निष्पादित नहीं होता क्योंकि firstString और thirdString का केसिंग मेल नहीं खाता।

equalsIgnoreCase() मेथड के साथ स्ट्रिंग्स की तुलना

यदि हमें Java में दो स्ट्रिंग्स की तुलना करने की आवश्यकता है लेकिन स्ट्रिंग्स के केसिंग की परवाह नहीं है, तो हम equalsIgnoreCase() मेथड का उपयोग कर सकते हैं।

उदाहरण के लिए, उपरोक्त कोड स्निपेट में, यदि हम .equals() को .equalsIgnoreCase() मेथड से बदल दें, तो दोनों प्रिंट स्टेटमेंट निष्पादित होते हैं:

public class CompareTwoStrings {
    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test" + 123;
        String thirdString = "TEST123";
        if (firstString.equalsIgnoreCase(secondString)) {
            System.out.println("first and second strings are equal");
        }
        if (firstString.equalsIgnoreCase(thirdString)) {
            System.out.println("first and third string are equal");
        }
    }
}

आउटपुट:

first and second strings are equal
first and third string are equal
  • Java में toString() को ओवरराइड क्यों करें
  • Java में Strings को कैसे रिवर्स करें
  • String से नंबर कैसे निकालें
  • Java में String को Int में कैसे बदलें

स्ट्रिंग्स की तुलना के लिए == ऑपरेटर का उपयोग न करें

नोट: Java में दो स्ट्रिंग्स की तुलना करते समय, हमें == या != ऑपरेटर्स का उपयोग नहीं करना चाहिए।

ये ऑपरेटर्स वास्तव में रेफरेंस का टेस्ट करते हैं, और चूंकि कई String ऑब्जेक्ट्स एक ही String को दर्शा सकते हैं, यह गलत उत्तर देने के लिए उत्तरदायी है।

इसके बजाय, String.equals(Object) मेथड का उपयोग करें, जो String ऑब्जेक्ट्स की तुलना उनके मानों के आधार पर करेगा।

public class CompareTwoStrings {
    public static void main(String[] args) {
        String firstString = "Test123";
        String secondString = "Test123";
        String thirdString = new String("Test123");
        if (firstString == secondString) {
            System.out.println("first and second strings are equal");
        }
        if (firstString == thirdString) {
            System.out.println("first and third strings are equal");
        }
    }
}

आउटपुट:

first and second strings are equal

नोट: दूसरा प्रिंट स्टेटमेंट निष्पादित नहीं होता।

कॉन्स्टेंट वैल्यूज के साथ स्ट्रिंग्स की तुलना

जब किसी String की तुलना कॉन्स्टेंट वैल्यू से करते हैं, तो आप कॉन्स्टेंट वैल्यू को equals के बाईं ओर रख सकते हैं ताकि यह सुनिश्चित हो सके कि यदि दूसरा String null है तो आपको NullPointerException नहीं मिलेगा।

उदाहरण के लिए:

"baz".equals(foo)

जबकि foo.equals("baz") यदि foo null है तो NullPointerException फेंक देगा, "baz".equals(foo) का मूल्यांकन false होगा।

एक अधिक पठनीय विकल्प Objects.equals() का उपयोग करना है, जो दोनों पैरामीटर्स पर null चेक करता है:

उदाहरण: Objects.equals(foo, "baz")।

स्विच स्टेटमेंट में स्ट्रिंग्स की तुलना

Java 1.7 से, किसी String वेरिएबल की तुलना स्विच स्टेटमेंट में लिटरल्स से करना संभव है। सुनिश्चित करें कि String null नहीं है, अन्यथा यह हमेशा NullPointerException फेंकेगा। मानों की तुलना String.equals का उपयोग करके की जाती है, यानी केस सेंसिटिव।

public class CompareTwoStrings {
    public static void main(String[] args) {
        String stringToSwitch = "A";
        switch (stringToSwitch) {
            case "a":
                System.out.println("a");
                break;
            case "A":
                System.out.println("A"); // कोड यहां जाता है
                break;
            case "B":
                System.out.println("B");
                break;
            default:
                break;
        }
    }
}

निष्कर्ष

इस पोस्ट में हमने कोड उदाहरणों के साथ Java में स्ट्रिंग्स की तुलना करने के तरीके को समझाया। जब स्ट्रिंग्स का केसिंग मायने रखता है, तो हमें .equals() का उपयोग करना चाहिए और जब केसिंग महत्वपूर्ण नहीं है, तो हमें .equalsIgnoreCase() का उपयोग करना चाहिए।

इसके अलावा, हमें स्ट्रिंग्स की तुलना के लिए == ऑपरेटर का उपयोग नहीं करना चाहिए, क्योंकि == ऑपरेटर मान के बजाय रेफरेंस की जांच करता है।

  1. - Java में दो तारीखों की तुलना कैसे करें?

    Java में, दो तारीखों की तुलना Comparable इंटरफेस के compareTo() मेथड का उपयोग करके की जा सकती है। यह मेथड 0 लौटाता है यदि दोनों तारीखें समान हैं, यह मान 0 से अधिक लौटाता है यदि date1, date2 के बाद है और यह मान 0 से कम लौटाता है यदि date1, date2 से पहले है।सिंटैक्सint compareTo(T o)उदाहरणimport java.

  1. - Java में CLOB टाइप को String में कैसे कन्वर्ट करें?

    CLOB का मतलब Character Large Object है। सामान्य तौर पर, एक SQL Clob एक बिल्ट-इन डेटाटाइप है और बड़ी मात्रा में टेक्स्टुअल डेटा स्टोर करने के लिए उपयोग किया जाता है। इस डेटाटाइप का उपयोग करके, आप 2,147,483,647 कैरेक्टर्स तक डेटा स्टोर कर सकते हैं। java.sql.Clob इंटरफेस JDBC API का CLOB डेटाटाइप को द

  1. - Java गाइड: API टेस्टिंग के लिए JSON फ़ाइल को String में पढ़ें

    इस पोस्ट में हम देखेंगे कि Java में JSON फ़ाइल को String वेरिएबल के रूप में कैसे पढ़ें। यह कभी-कभी उपयोगी होता है, विशेष रूप से API टेस्टिंग में जब आप किसी एंडपॉइंट पर JSON पेलोड POST करना चाहते हैं। आप JSON पेलोड को एक फ़ाइल में रख सकते हैं, फिर JSON फ़ाइल को String के रूप में पढ़ें और इसे POST अनु