प्रत्येक लूप इस मामले के लिए काम नहीं करेगा। आप सरणी को प्रारंभ करने के लिए प्रत्येक लूप के लिए उपयोग नहीं कर सकते हैं। आपका कोड:
int[] array = new int[5];
for (int i : array) {
i = 24;
}
निम्नलिखित की तरह कुछ करने के लिए अनुवाद कर देगा:
int[] array = new int[5];
for (int j = 0; j < array.length; j++) {
int i = array[j];
i = 24;
}
यदि यह ऑब्जेक्ट की श्रृंखला थे, यह अभी भी विफल हो जाएगा। असल में, प्रत्येक-प्रत्येक संग्रह को आपके द्वारा प्रदान किए जाने वाले चर के लिए, संग्रह या सरणी में प्रत्येक प्रविष्टि को आवंटित करता है, जिसके बाद आप काम कर सकते हैं। परिवर्तनीय एक सरणी संदर्भ के बराबर है। यह सिर्फ एक चर है।
के लिए-प्रत्येक, प्रारंभ करने में किसी भी सरणी या संग्रह नहीं किया जा सकता क्योंकि यह सरणी या संग्रह की वर्तमान सामग्री पर लूप होता है, आप प्रत्येक मूल्य एक समय में एक दे रही है। प्रत्येक के लिए चर किसी सरणी या संग्रह संदर्भ के लिए प्रॉक्सी नहीं है। कंपाइलर "array[index]
" के साथ आपके "i
" ("int i
" से) को प्रतिस्थापित नहीं करता है।
आप दिनांक की एक सरणी, उदाहरण के लिए है, और यह, कोड का प्रयास करें:
Date[] array = new Date[5];
for (Date d : array) {
d = new Date();
}
कुछ इस तरह करने के लिए अनुवाद किया जाएगा: जो
Date[] array = new Date[5];
for (int i = 0; i < array.length; i++) {
Date d = array[i];
d = new Date();
}
के रूप में आप देख सकते हैं होगा सरणी शुरू नहीं करें। आप सभी नल युक्त एक सरणी के साथ खत्म हो जाएगा।
नोट: मैंने उपरोक्त कोड लिया, इसे .class
फ़ाइल में संकलित किया, और उसके बाद इसे jad का उपयोग करने के लिए उपयोग किया। यह प्रक्रिया मुझे सूर्य जावा कंपाइलर द्वारा उत्पन्न निम्न कोड देता है (1।6) उपरोक्त कोड से:
int array[] = new int[5];
int ai[];
int k = (ai = array).length;
for(int j = 0; j < k; j++)
{
int i = ai[j];
i = 5;
}
अन्य प्रश्न डुप्लिकेट नहीं होना चाहिए? यह पहला था। – masher