2011-06-02 28 views
13

मैं पाश के लिए निम्नलिखित है:जावा के लिए (एक्स: वाई) निष्पादन

for(String s : someString.split("\\s+")){ 
    //do something 
} 

जावा पर अमल करता है विभाजन() विधि हर बार पाश दोहराता है, या यह केवल एक बार यह क्या करता है और एक अस्थायी रखना सरणी करने के लिए सरणी?

उत्तर

18

यह केवल एक बार करता है, और उस सरणी का उपयोग करता है और इसके माध्यम से इंटरैक्ट करता है।

संपादित करें: चटाई से इस reference

+6

वास्तव में क्या होता है [जेएलएस बढ़ाया 'के लिए' कथन] में विस्तृत किया गया है (http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.2) दस्तावेज़ – Mat

+0

@ मट, आपको दिमाग है अगर मैं अपने लिंक के साथ अपना जवाब संपादित करता हूं? – RMT

+1

आगे बढ़ें, मैंने इसे केवल इसके लिए रखा है :-) – Mat

3

यह सरणी का उपयोग करने से पहले एक अस्थायी चर में स्टोर करता है।

2

कोई विभाजन स्ट्रिंग पर और उसके बाद परिणाम

1

विभाजन पद्धति पर पाश पुनरावृति केवल एक बार कहा जाता है एक बार निष्पादित किया जाता है। संरचना के बारे में सोचें (प्रत्येक के लिए भी जाना जाता है) निम्नानुसार:

  • दूसरे तर्क का मूल्यांकन और लूप की अवधि के लिए रखा जाता है।
  • यदि तर्क एक इटरटेबल देता है या एक सरणी (विशेष मामला) देता है, तो चेक को तब देखा जाता है कि पहले तर्क का प्रकार लौटाए गए तत्वों से मेल खाता है या नहीं।
  • प्रक्रिया लूप में प्रवेश करती है और दायरे के अंदर कोड निष्पादित करती है और जब कोई और तत्व शेष नहीं होता है तो बाहर निकलता है।

अधिक जानकारी यहां किया जा सकता है: http://www.leepoint.net/notes-java/flow/loops/foreach.html

पी.एस: यह जावा 5 न्यूनतम के साथ काम करता है।

+1

क्या दूसरा चरण आमतौर पर संकलन समय पर नहीं किया जाता है? – trutheality

+0

इसके अलावा यदि "एक सरणी इष्टतम है" तो आपका मतलब है कि एक सरणी 'Iterable' इंटरफ़ेस लागू करती है, यह गलत है। – trutheality

+0

शायद। यह कहना मुश्किल है कि ग्रहण जैसे आईडीईई संकलन का एक रूप है जब यह मुद्दों को रेखांकित करता है। –

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