Tuesday 15 June 2010

Comparing strings in java -


  स्ट्रिंग string1 = "हाय वहाँ"; स्ट्रिंग स्ट्रिंग 2 = "हाय"; स्ट्रिंग स्ट्रॉजन 3 = "हाय"; System.out.println (स्ट्रिंग 1.substring (0, स्ट्रिंग 2. लांघ ()) == स्ट्रिंग 2); // 1 System.out.println (string1.substring (0, स्ट्रिंग 2. लांघ ())। बराबर (स्ट्रिंग 2)); // 2 System.out.println (string1.substring (0, स्ट्रिंग 2. लांघ ()) तुलना करें (स्ट्रिंग 2)); // 3 System.out.println (स्ट्रिंग 2 == स्ट्रिंग 3); // 4 System.out.println (string2.substring (0) == स्ट्रिंग 3); // 5 System.out.println (string2.substring (0) == string3.substring (0)); // 6  

मुझे आउटपुट देता है:

  false true 0 true true true  

मैं नहीं वास्तव में पहली पंक्ति को समझने के लिए, यह मुझे झूठे क्यों दे रहा है?

अगर मैं स्ट्रिंग 2 के लिए एक रिक्त स्थान जोड़ता हूं और यह पंक्ति मुझे झूठी हो जाती है, लेकिन अगर मैं कोई सफेद स्थान नहीं जोड़ता तो मैं सच हो जाता हूं:

< पूर्व> System.out.println (string2.substring (0, स्ट्रिंग 3. लांघ ()) == string3);

क्यों पंक्ति 1 मुझे झूठी देनी चाहिए, लेकिन पंक्ति 6 ​​सही हो, लेकिन अगर मैं स्ट्रिंग 2 को एक सफेद स्थान जोड़ता हूं तो यह गलत है ..

धन्यवाद =)

वहां कई चीजें चल रही हैं

जब आप बराबर "हाय" होने के लिए दो स्ट्रिंग घोषित करते हैं, तो जावा एक ही स्ट्रिंग ऑब्जेक्ट को संदर्भित करने के लिए इसका अनुकूलन करता है (इसलिए उसे दो बार समान स्ट्रिंग संग्रहीत नहीं करना है)।

> "==" संदर्भों की तुलना करता है जब पंक्ति 1 में आप सबस्ट्रिंग का उपयोग करते हैं, तो बनाया स्ट्रिंग ऑब्जेक्ट स्ट्रिंग 2 की तुलना में एक अलग संदर्भ है।

पंक्ति 6 ​​में, मुझे लगता है कि उपस्ट्रिंग (0) का एक अनुकूलन है, जहां यह जानता है कि वह सिर्फ मूल स्ट्रिंग लौटा सकता है, इस तरह वे संदर्भ बराबर हैं।


No comments:

Post a Comment