मैं थोड़ी देर के लूप का उपयोग करना पसंद करता हूं , लेकिन एक अशक्त अभिव्यक्ति आपको यह लिखने देती है:
for (;;) { thread.run(); }
हालाँकि, एक अशक्त कथन आइए आप इसे लिखते हैं:
while(true);
{
thread.run();
}
जिसका प्राथमिक उद्देश्य खराब रखरखाव प्रोग्रामर का समय बर्बाद करना है जो आपके बाद आता है और आश्चर्य करता है कि थ्रेड क्यों नहीं चल रहा है। कुछ समय बाद एक कथन का पालन करना चाहिए। अकेला ; एक बयान है। इसलिए यह स्टेटमेंट ब्लॉक वास्तव में लूप का हिस्सा नहीं है।
यह कहना नहीं है कि वहाँ अच्छा उपयोग नहीं कर रहे हैं। वे सिर्फ दुर्लभ हैं। वे आमतौर पर इस तरह दिखते हैं:
{
;
}
क्योंकि इस तरह से ऐसा लगता है कि आप ऐसा करने का मतलब है (यहां तक कि यह कभी-कभी पर्याप्त नहीं होता है)।
असेंबली में इस अशक्त कथन को एनओपी कहा जाता है । पायथन में इसे पास कहा जाता है । जावा में (और c के अन्य बच्चे) यह एक अर्धविराम है जैसा कि आपने कहा है, या यहां तक कि सत्य का दावा करते हैं;
मुझे कुछ उपयोगों की जानकारी है:
शब्दार्थ ।
एक खाली जगह और एक जवाब के रूप में एक शून्य नीचे रखने के बीच अंतर है। यह स्पष्ट रूप से कहता है, नहीं, मैं यहां कुछ रखना नहीं भूलता। यह कुछ भी नहीं होने का मतलब है। यह स्पष्ट नहीं है। यह जगह जानबूझकर खाली छोड़ी गई है। इस प्रकार हमें संकलन करने के लिए एन / ए मिलता है।
अशक्त पैटर्न
एक जटिल और महंगी लाइट सिग्नलिंग मशीन की कल्पना करें, जो बार-बार एक कन्वेयर बेल्ट से एक रंगीन प्रकाश बल्ब उठाती है, इसे एक सॉकेट में खराब कर देती है, इसे संचालित करती है, इसे हटाती है, और अगले एक को उठाती है। आप इस बात को नियंत्रित कर सकते हैं कि बेल्ट पर लगाए गए बल्बों के रंग से यह बात क्या संकेत देती है। महान, अब जब कि यह अंत में निर्दोष रूप से काम कर रहा है तो आपका बॉस चाहता है कि आप इन संकेतों के समय को नियंत्रित करने का एक तरीका बनाएं। वह संदेशों के बीच एक अंतर जोड़ना चाहता है। आपको डरावनी याद है कि कई हिस्सों को इन संकेतों के समय के बारे में परवाह है और उन्हें सिंक में प्राप्त करने के लिए क्या दर्द था। सप्ताहांत में आपको काम पर रखे बिना आप समय को कैसे नियंत्रित करेंगे? आप जले हुए बल्बों के एक बिन पर नज़र डालते हैं और ए, अच्छी तरह से शाब्दिक रूप से उज्ज्वल विचार प्राप्त नहीं करते हैं।
कभी-कभी आप बहुरूपता का उपयोग करना चाहते हैं बस कुछ को तोड़ने के बिना कुछ बंद करें।
डिबगिंग
जब आप एक ब्रेकपॉइंट सेट करते हैं तो आपको ब्रेकप्वाइंट के लिए एक जगह होने की आवश्यकता होती है। अब यकीन है कि कुछ डीबगर्स आपको इसे बंद करने वाले ब्रेस पर सेट करने देंगे, लेकिन अगर वे इसे अच्छा नहीं मानते हैं, तो भाषा आपको बल देती है कि एक जगह रखने के लिए एक जगह हो, भले ही वह जगह कुछ भी क्यों न हो।
वास्तव में एक जावा चीज़ नहीं है, लेकिन यह भी है:
बाइनरी फ़िडलिंग
असेंबली NOP निर्देश संकलित बाइनरी निष्पादन योग्य के साथ फ़िडलिंग की अनुमति देता है। लेकिन आधुनिक जावा कंपाइलर बहुत दूर का अनुकूलन करते हैं, मुझे यकीन नहीं है कि अर्धविराम सिर्फ जहर नहीं है। लेकिन पुराने दिनों में हमने टाइमिंग को नियंत्रित करने या बाद में हुक में छोड़ने की अनुमति देने के लिए इन खाली स्थानों का उपयोग किया। एनओपी के बिना वहां वास्तविक निर्देश होंगे, इसलिए यदि आप हुक करना चाहते हैं तो आपको हुक के लिए जगह बनाने के लिए उन निर्देशों को कहीं और कॉपी करना होगा। यह ठीक उसी भाषा में काम करता है जिस तरह से जावा को इसके वाक्य-विन्यास से बहुत कुछ मिलता है। लेकिन मुझे नहीं लगता कि यह हुक फ़िडलिंग जावा में बहुत होता है। हम ऐसा करने के लिए Aspect Oriented प्रोग्रामिंग का उपयोग करते हैं।