"" एक वास्तविक स्ट्रिंग है, यद्यपि एक खाली एक।
शून्य, हालांकि, इसका मतलब है कि स्ट्रिंग चर कुछ भी नहीं है।
a==b
झूठा रिटर्न देता है क्योंकि "" और शून्य स्मृति में एक ही स्थान पर कब्जा नहीं करते हैं - दूसरे शब्दों में, उनके चर एक ही ऑब्जेक्ट को इंगित नहीं करते हैं।
a.equals(b)
झूठा रिटर्न देता है क्योंकि "" स्पष्ट रूप से शून्य के बराबर नहीं है।
अंतर नहीं है, हालांकि यह है कि "के बाद से" एक वास्तविक स्ट्रिंग है, तो आप अभी भी तरीके या कार्यों उस पर तरह
a.length()
a.substring(0, 1)
और इतने पर आह्वान कर सकते हैं।
स्ट्रिंग शून्य के बराबर होती है, तो ख की तरह, जावा एक NullPointerException
फेंक अगर आप लागू करने की कोशिश की होगी, कहते हैं:
b.length()
तो अंतर के बारे में आप है == बनाम बराबर होती है सोच रहे हैं, यह इस है:
== संदर्भ तुलना, अगर मैं
String a = new String("");
String b = new String("");
System.out.println(a==b);
चला गया
कि उत्पादन झूठी क्योंकि मैं दो अलग-अलग वस्तुओं आवंटित है, और विभिन्न वस्तुओं के लिए ए और बी बिंदु होगा।
हालांकि, इस मामले में a.equals(b)
, सच वापसी होगी, क्योंकि स्ट्रिंग्स के लिए equals
सच if and only if the argument String is not null and represents the same sequence of characters.
चेतावनी दी हो वापस आ जाएगी, हालांकि, जावा स्ट्रिंग्स के लिए किसी विशेष परिस्थिति में है कि।
String a = "abc";
String b = "abc";
System.out.println(a==b);
आप सोच सकता है कि उत्पादन false
होगा, क्योंकि यह दो अलग अलग स्ट्रिंग्स का आवंटन करना चाहिए। वास्तव में, जावा शाब्दिक तार (जो कि हमारे उदाहरण में ए और बी की तरह प्रारंभ कर रहे हैं) intern होगा। तो सावधान रहें, क्योंकि यह == काम करता है पर कुछ झूठी सकारात्मक दे सकता है। जो सच है -
'के साथ तुलना करें b.equals (क)' - लेकिन उपयोग नहीं करते हैं '==' स्ट्रिंग के रूप में अन्य तरीकों से "यह काम नहीं करेगा" की तुलना के लिए। 'शून्य' मान (जो एक खाली स्ट्रिंग '" "', एक मान्य स्ट्रिंग इंस्टेंस से अलग है) * कभी * उस पर कोई विधि लागू नहीं हो सकती है। समानता के बाईं ओर "ज्ञात गैर-शून्य" (आमतौर पर एक स्थिर मूल्य या शाब्दिक) रखना "योड सशर्त" या कुछ ऐसा है। –