2011-08-22 14 views
5
में पाश के लिए एक का पूर्णांक मान अपसंदर्भन

मैं सिर्फ पता लगा कि जब मैं जावा में ऐसा करते हैं:जावा

for(int x = 0; x < 3; x++) 
{ 
    String bla = "bla"; 
    bla += x.toString(); 
} 

यह (Netbeans इस मामले में) मुझे बताओ कि मैं नहीं कर सकता मेरी एक्स पूर्णांक भिन्नता में इस तरह (जैसा कि मैं सी # में होगा)।

वह क्यों है?

+0

बस जांचने के लिए, कोड संकलित और चलाता है? –

+1

कोई '' bla toString() 'पूर्णांक के लिए, लेकिन आपके मामले में, आप कर सकते हैं + = एक्स है,' –

+0

यह संकलन और चलाने में सी # हाँ – Mnescat

उत्तर

8

आदिम प्रकार जावा में वस्तुओं नहीं हैं, इसलिए यदि आप अन्य तरीकों का उपयोग करने के लिए है कि क्या करने की जरूरत इस मामले में:

Integer.toString(x); 
+0

अपने समय के लिए धन्यवाद है। इसने मेरे प्रश्न – Mnescat

4

एक्स एक Integer, इसकी एक int नहीं है, और int, एक आदिम प्रकार है, इसलिए यह toString जरूरत नहीं है।

7

किसी पूर्णांक एक आदिम, एक वस्तु नहीं है, और इसलिए एक भी नहीं है toString() विधि।

लेकिन आप यह कर सकते हैं:

String bla = "bla" + x; 
5

int एक वस्तु है, लेकिन एक आदिम प्रकार नहीं है। इस प्रकार, आप int से विधियों को कॉल नहीं कर सकते हैं। यदि आपने इसे Integer के रूप में परिभाषित किया है, तो त्रुटि संदेश दूर जाएगा। हालांकि, आप वास्तव में toString से छुटकारा पा सकते हैं, क्योंकि x को स्वचालित रूप से String पर ले जाया जाएगा।

3

जावा में, आदिम प्रकार (बूलियन int, छोटा, चार, लंबा, फ्लोट, डबल) ऑब्जेक्ट्स नहीं हैं।

हालांकि वे आवरण प्रकार है (पूर्णांक, चरित्र, ...) जो स्थिर 1) utilyty कार्यों और 2) अपने उदाहरणों आदिम मूल्यों लपेट कर सकते हैं।

+1

का उत्तर दिया है, यही कारण है कि कोई भी सी # इस प्रश्न पर आ जाएगा: चूंकि रैपर प्रकार स्वचालित रूप से आदिम को बॉक्स करता है, और रैपर में टॉस्ट्रिंग() है, तो x.toString() मान्य क्यों नहीं है? एक्स को इंटीजर और इंटीजर के लिए बॉक्स होना चाहिए()। तो जवाब वास्तव में नहीं है कि एक int एक आदिम है (यह सी # में है और साथ ही वह बताता है), लेकिन सवाल यह है कि "जावा ऑटोबॉक्सिंग क्यों नहीं कर रहा है। नेट ऑटोबॉक्सिंग क्या करता है"। –

+0

वास्तव में यही तो मैं इतना x.toString() बिल्कुल autoboxing शामिल नहीं है, पता करने के लिए – Mnescat

+0

मैंने सोचा था कि नेट पूर्णांक में वास्तव में वस्तु है चाहता था। लेकिन यह मूल्य वस्तु है, इसलिए संदर्भ वस्तु की आवश्यकता है, autoboxing शामिल हो। – Alpedar

4

आपने x को int टाइप करने के लिए घोषित किया जो कि एक वस्तु नहीं है, एक वस्तु नहीं है। Primitives में विधियों (जैसे toString()) नहीं हो सकता है उन पर बुलाया। आप आदिम आवरण Integer इस्तेमाल कर सकते हैं अगर आप toString() आह्वान करने के लिए चाहते हैं, या आप बस toString() का कॉल निकालना सकता है और तार और पुरातन के जावा के विशेष हैंडलिंग खुद का ख्याल रखना होगा।