java - The local variable string may not have been initialized peculiarity -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 7 जवाब
मैं जो जानता हूं, इनटाइटलिंग एक वेरिएबल तब होता है जब आप इसके लिए एक मान सेट करते हैं उदाहरण के लिए:
स्ट्रिंग; // स्ट्रिंग घोषित (यदि आप सशर्त में उपयोग करते हैं तो त्रुटि फेंकता है) स्ट्रिंग s = null; // स्ट्रिंग (कोई त्रुटि नहीं) को घोषित करना और उसके बाद आरंभ करना
हालांकि, जब कोई
स्ट्रिंग घोषित किया जाता है, तो यह स्वतः ही
null < / code>? इसलिए, संकलक को कोई त्रुटि नहीं डालनी चाहिए।
मैंने यह भी ध्यान दिया है कि
स्ट्रिंग s = नया स्ट्रिंग (); शर्त के साथ प्रयोग किए जाने पर कोई भी त्रुटि उत्पन्न नहीं करता है, लेकिन
स्ट्रिंग एस; करता है मैंने सोचा था कि ये दो बयान अनिवार्य रूप से एक ही बात थे और बाद के को भी पूर्व में प्रोत्साहित किया गया था।
मेरे सवाल हैं, क्यों
स्ट्रिंग s = new string (); काम करता है लेकिन नहीं
स्ट्रिंग s; (जब उनके मान सेट करने के लिए कंडीशंस का उपयोग कर रहे हैं)?
null में दोनों तारों को स्वचालित रूप से व्यर्थ नहीं किया जाना चाहिए, इसलिए किसी त्रुटि के कारण नहीं?
बोनस प्रश्न: चूंकि
स्ट्रिंग ऑब्जेक्ट्स स्वचालित रूप से
रिक्त , क्यों निम्न कोड को एक खाली
स्ट्रिंग प्रिंट नहीं करता?
स्ट्रिंग s = new string (); Println (रों);
संपादित करें: जाहिरा तौर पर मैं सीधे सोचता हूँ जब मैं थका हुआ हूं। यह पूरा सवाल एक गड़बड़ है, मुझे नहीं पता कि मैं क्या सोच रहा था। जिन लोगों को इसे समझने और समझना था, उनको क्षमा चाहते हैं।
इसके अलावा, डिफ़ॉल्ट मानों पर:
स्थानीय चर थोड़ा विभिन्न; कंपाइलर एक अनमिनित स्थानीय चर के लिए एक डिफ़ॉल्ट मान कभी नहीं निर्दिष्ट करता है यदि आप अपने स्थानीय चर को इनिशियलाइज़ नहीं कर सकते हैं, जहां इसे घोषित किया गया है, तो इसे उपयोग करने का प्रयास करने से पहले इसे निश्चित मान दें। एक अनिर्धारित स्थानीय चर तक पहुँचने से एक संकलन-समय त्रुटि उत्पन्न होगी।
ऊपर दिए गए प्रश्न का उत्तर कौन देता है।
< div class = "post-text" itemprop = "text">
हालांकि, जब कोई स्ट्रिंग घोषित किया जाता है, तो क्या यह स्वतः रिक्त करने के लिए आरंभिक नहीं है? इसलिए, संकलक को कोई त्रुटि नहीं डालनी चाहिए।
नहीं, यह केवल क्लास स्तरीय चर के लिए सच है स्थानीय चर को एक डिफ़ॉल्ट मान नहीं सौंपा गया है, लेकिन इसे स्पष्ट रूप से आरम्भ करने की आवश्यकता है।
चूंकि स्ट्रिंग ऑब्जेक्ट्स को स्वचालित रूप से रिक्त करने के लिए आरंभ किया जाता है, इसलिए निम्न कोड एक खाली स्ट्रिंग प्रिंट क्यों करता है?
स्ट्रिंग ऑब्जेक्ट को
null से प्रारंभ नहीं किया गया है। दूसरी तरफ कक्षा स्तर
स्ट्रिंग संदर्भ हैं।
Comments
Post a Comment