2012-11-27 12 views
8

अपने प्रोजेक्ट, कहीं न कहीं में मैं अगर n बाकी हालत अशक्त चरके बीच अंतर क्या है बातिल और String.valueOf (स्ट्रिंग वस्तु)

String stringValue = null; 
String valueOf = String.valueOf(stringValue); 

जाँच करने के लिए, लेकिन जब मैं जाँच का उपयोग करने के की "अशक्त"

if (valueOf == null) { 
     System.out.println("in if"); 
    } else { 
     System.out.println("in else"); 
    } 

तो उत्पादन "और में" है, जैसे हालत यह क्यों हो रहा है?

public static String valueOf(Object obj) { 
    return (obj == null) ? "null" : obj.toString(); 
} 

आप देख सकते हैं, एक null मूल्य के लिए यह रिटर्न "null" स्ट्रिंग -:

+0

शून्य संदर्भ "शून्य" स्ट्रिंग से अलग है। http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#valueOf(java.lang.Object) – kosa

+0

एक डीबगर मदद मिलेगी? – Scorpion

+0

नेटबीन्स में जावा-स्ट्रिंग मैन्युफ्यूलेशन –

उत्तर

14

यहाँ स्रोत कोड String.valueOf की है।

तो,

String stringValue = null; 
String valueOf = String.valueOf(stringValue); 

valueOf करने के लिए "null" स्ट्रिंग देता है।

इसी प्रकार, यदि आप करते हैं: -

System.out.println(null + "Rohit"); 

आप मिल जाएगा: -

"nullRohit" 

संपादित

एक और उदाहरण:

लेकिन इस मामले में।

Integer integer = 10; 
String valueOf = String.valueOf(integer) // "10" 
+0

धन्यवाद के लिए डीबगर नहीं है, लेकिन जब हम दोनों शून्य और "शून्य" की तुलना करते हैं तो दोनों बराबर क्यों नहीं होते हैं। –

+4

@arvin_codeHunk, 'null' एक खाली वस्तु है, जबकि' null "' एक वास्तविक स्ट्रिंग है जिसमें अक्षरों 'n', 'u', 'l', और 'l' शामिल हैं। –

+0

स्ट्रिंग यहां आपको नल के रूप में लिखा गया है कि आपने अभी शून्य के स्ट्रिंग मान को लिया है जो 'null" 'के बराबर है। तो एक 'शून्य' 'शून्य '' शाब्दिक के बराबर नहीं होगा। –

2

दरअसल, आप विधि के कार्यान्वयन पर एक नजर डाल सकते हैं: valueOf()। आपको पता चलेगा कि तब क्या हुआ।

JDK 1.5 में, अपने कोड इस तरह है:

public static String valueOf(Object obj) { 
return (obj == null) ? "null" : obj.toString(); 
} 
कोड से

, जैसा कि आप देख सकते हैं कि अगर वस्तु रिक्त है उसमें "अशक्त" मूल्य, के साथ एक नहीं अशक्त स्ट्रिंग वापस आ जाएगी जो मतलब है कि ऑब्जेक्ट शून्य नहीं है।

संबंधित मुद्दे