2010-05-22 14 views
10

किसी भी एक मेरे लिए यह निर्देश समझाने चाहेंगे करें: इन निशान के (;;)जावा: क्या है "(;;) के लिए"

मैं सामना करना पड़ा कई प्रकार के लिए (जैसे फेसबुक के ajax कोड में और जावा की समवर्ती सामग्री में)।

+3

# कभी परिभाषित करें ;; (कभी) // के लिए ... – Andrew

उत्तर

23

एक अनंत लूप।

लूप के लिए तीन हिस्सों में से प्रत्येक (for(x; y; z)) वैकल्पिक है।

तो तुम यह कर सकते हैं:

int i = 0; 
for (; i < 20; ++i) 

और यह पूरी तरह से वैध है, या

for (int i = 0; i < 20;) { ++i; } 

या

for (int i = 0; ; ++i) { if (i < 20) { break; } } 

और वे सभी वैध कर रहे हैं।

आप for(;;) के साथ सभी तीन हिस्सों को भी छोड़ सकते हैं।

  • कोई प्रारंभ (पहला भाग)
  • रोक के लिए कोई शर्त (मध्य भाग)
  • करता है प्रत्येक यात्रा के बाद कुछ भी नहीं (अंतिम भाग) है
करता है: तो फिर तुम एक पाश है

इसलिए मूल रूप से एक अंतहीन पाश। यह लूप बॉडी में जो कुछ भी कहता है, वह करता है, बार-बार

+0

संदर्भ के लिए जावा भाषा विशिष्टता §14.14.1.2 http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.1.2 देखें: "यदि _Expression_ मौजूद नहीं है, या यह मौजूद है और इसके मूल्यांकन से उत्पन्न मूल्य (किसी भी संभावित अनबॉक्सिंग सहित) 'सत्य' है, फिर निहित * स्टेटमेंट * निष्पादित किया गया है। " –

+9

यह उत्तर" कोई सवाल बहुत आसान नहीं है "की उत्कृष्टता साबित करता है। :) –

6

यह एक अंतहीन पाश है। for कथन के विनिर्देश के लिए, here देखें।

5

अनंत लूप है यही कारण है, के लिए

while(true) 
{ 
    ... 
} 
2

यह एक अनंत लूप समान, (न के बराबर) से बाहर निकलें शर्त के रूप में देख रहा है झूठी कभी नहीं होगा। ,

for (int x=0; ; x++) { } 

बिल्कुल while (true) रूप में एक ही है, हालांकि थोड़ा कम पठनीय IMHO:

पाश के लिए

किसी भी एक निकास शर्त के बिना अनंत हो जाएगा।

2

यह वास्तव में एक अनंत लूप है। लेकिन जावा में आपको वास्तव में for (;;) से अधिक पसंद करना चाहिए क्योंकि यह अधिक पठनीय है (जिसे आप शायद पहले ही महसूस कर सकते हैं)। संकलक वैसे भी इसे अनुकूलित करेगा। जावास्क्रिप्ट में एक कंपाइलर और HTTP बाइट्स पर हर बाइट का कोई मतलब नहीं है, यही कारण है कि for (;;) को प्राथमिकता दी जाती है। यह कुछ पात्रों (बाइट्स) बचाता है।

+0

'जबकि (सत्य)' – whiskeysierra

+0

की पठनीयता के लिए +1 मुझे '(;;) 'अधिक पठनीय होने के लिए मिलता है। – jalf

2

पाश के लिए एक वाक्य विन्यास

for (init-stmt; condition; next-stmt) { 

} 

तो यह बस एक कोई प्रारंभिक बयान, अगले बयान या शर्त के साथ पाश के लिए है। बाहर निकलने की स्थिति की अनुपस्थिति इसे अनंत बनाती है।

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