बयान के लिए बढ़ाया है प्रपत्र:
EnhancedForStatement:
for (VariableModifiersopt Type Identifier: Expression) Statement
अभिव्यक्ति के पास या तोहोना चाहिए 10 Iterable
या अन्यथा यह सरणी प्रकार (§10.1), या एक संकलन-समय त्रुटि होनी चाहिए।
एक स्थानीय चर का दायरा एक बढ़ाया for
बयान (§14.14) की FormalParameter भाग में घोषित निहित वक्तव्य
बढ़ाया for
बयान का अर्थ एक में अनुवाद द्वारा दिया जाता है है मूल for
कथन।
Expression
के प्रकार Iterable
के उपप्रकार है, तो I
हो अभिव्यक्ति अभिव्यक्ति के प्रकार करते हैं।iterator()
। बढ़ाया for
बयान बराबर प्रपत्र की एक बुनियादी for
बयान के लिए है:
for (I #i = Expression.iterator(); #i.hasNext();) {
VariableModifiersopt Type Identifier = #i.next();
Statement
}
कहाँ #i
एक संकलक-उत्पन्न पहचानकर्ता है कि किसी भी अन्य पहचानकर्ता (से अलग है है संकलक उत्पन्न या अन्यथा) जो उस बिंदु पर स्कोप (§6.3) में हैं जहां कथन के लिए बढ़ाया गया है।
अन्यथा, अभिव्यक्ति जरूरी एक सरणी प्रकार, T[]
है।L1 ... Lm
के से पहले for
कथन से पहले (संभावित रूप से खाली) अनुक्रम (संभवतः खाली) अनुक्रम दें। फिर बयान के लिए बढ़ाया का अर्थ निम्न बुनियादी for
बयान द्वारा दिया जाता है:
T[] a = Expression;
L1: L2: ... Lm:
for (int i = 0; i < a.length; i++) {
VariableModifiersopt Type Identifier = a[i];
Statement
}
कहाँ एक और मैं संकलक उत्पन्न पहचानकर्ता है कि किसी भी अन्य पहचानकर्ता से भिन्न होता है (हैं संकलक-उत्पन्न या अन्यथा) जो बिंदु पर दायरे में हैं जहां कथन के लिए बढ़ाया गया है।
बेशक, यह जानने का सबसे आसान तरीका है कि परीक्षण करना ... genarray() में एक साधारण System.out.println() पर्याप्त है! – PhiLho
[जावा फोरच दक्षता] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/904582/java-foreach- क्षमता) –