सी-जैसे वाक्यविन्यास वाली भाषाओं के मामले में, हम मुख्य() विधि को एक int या float value (या शून्य) वापस करने के लिए घोषित करते हैं। जावा में मुख्य() से एक गैर-शून्य रिटर्न प्रकार घोषित करना संभव है? यदि नहीं, तो क्यों नहीं? क्या इसका मतलब यह है कि जावा प्रोग्राम ओएस पर कोई मूल्य नहीं लौटाता है?जावा शून्य में मुख्य() क्यों है?
उत्तर
आप System.exit() के साथ एक int वापस कर सकते हैं।
एक पूर्णांक के अलावा कुछ भी लौटने से ज्यादा समझ नहीं आती है, क्योंकि ओएस एक पूर्णांक की अपेक्षा करता है। यदि कुछ भी वापस नहीं किया जाता है तो डिफ़ॉल्ट 0 होता है, जिसका अर्थ ठीक है। अन्य मान आमतौर पर त्रुटियों या विशेष परिस्थितियों को सिग्नल करने के लिए उपयोग किया जाता है।
This एक ही विषय पर velocityreviews
पर एक दिलचस्प चर्चा है:
हाइलाइट:
संयोग से, इस सी और C++ सिर्फ इसलिए यह गलत मुख्य के लिए हस्ताक्षर है बुरा शैली माना जाता है , किसी भी सार्वभौमिक कारण प्रोग्रामिंग भाषाओं से स्वतंत्र नहीं है। यह उन चीजों में से एक है जो वास्तव में काम नहीं करना चाहिए, लेकिन आपके कार्यान्वयन पर हो सकता है।
जावा में, मुख्य रिटर्न शून्य कारण धागा है। C और C++ थे दोनों भाषाओं के रूप में तैयार करने से पहले बहु सूत्रण एक व्यापक रूप से ज्ञात तकनीक था, और दोनों धागे एक बाद की तारीख में उन्हें पर ग्राफ्ट था। जावा शुरू से डिजाइन किया गया था एक बहु-क्रम वातावरण होने के लिए, और स्पष्ट रूप से, यह किसी भी गैर तुच्छ जावा अनुप्रयोग कि एक से अधिक थ्रेड का उपयोग नहीं करता लिखने के लिए असामान्य होगा। तो विचार है कि एक प्रोग्राम रैखिक रूप से शुरुआत से लेकर अंत तक अंत तक चलता है, यह थोड़ा पुराना है।
द्वारा
www.designacourse.com सबसे आसान तरीका लिखा कोई भी ट्रेन ... कहीं भी। क्रिस स्मिथ - लीड सॉफ्टवेयर डेवलपर/तकनीकी ट्रेनर MindIQ निगम
main()
विधि वास्तव में एक void
वापसी प्रकार होना आवश्यक है।
विधि
main
public
,static
घोषित किया जाना चाहिए, औरvoid
: (§12.1.4) - "वर्चुअल मशीन स्टार्ट-अप निष्पादन" पर Java Language Specification से। यह एक भी तर्क तार का एक सरणी है कि स्वीकार करना चाहिए।
यह वर्णन करने के लिए पर चला जाता है जब में एक कार्यक्रम बाहर निकलता है "निष्पादन - कार्यक्रम से बाहर निकलें" (§12.8):
जब दो चीजों में से एक होता है एक प्रोग्राम अपने सभी गतिविधि और बाहर निकलता है समाप्त हो जाता है :
- सभी थ्रेड जो डेमॉन थ्रेड समाप्त नहीं होते हैं।
- कुछ धागा वर्ग
Runtime
या वर्गSystem
और बाहर निकलने आपरेशन केexit
विधि invokes सुरक्षा प्रबंधक द्वारा निषिद्ध नहीं है।
दूसरे शब्दों में, कार्यक्रम से पहले या main
विधि पूर्ण होने के बाद बाहर निकल सकते हैं; main
से वापसी मूल्य इसलिए अर्थहीन होगा। आप इस कार्यक्रम वाला स्थिति कोड, वापस जाने के लिए निम्न विधियों का फोन (ध्यान दें कि तीनों विधियों सामान्य रूप से कभी वापस नहीं) चाहते हैं:
System.exit(int status)
-Runtime.getRuntime().exit(status)
Runtime.exit(int status)
के बराबर - समाप्त हो जाता है वर्तमान में चल JVM अपने शट डाउन अनुक्रम को शुरू करके (सभी आवश्यक shutdown hooks चलाएं, और uninvoked finalizers, यदि आवश्यक हो)। एक बार यह किया जाता है JVM रोकता है।Runtime.halt(int status)
- जबरन वर्तमान में चल रहे JVM को समाप्त करता है।
तीन में से System.exit()
जेवीएम को समाप्त करने का पारंपरिक और सबसे सुविधाजनक तरीका है।
void
वापसी प्रकार के रूप में होने main
विधि के लिए कारण यह है कि एक बार main
खत्म, यह जरूरी नहीं है कि पूरे कार्यक्रम समाप्त हो गया है। यदि main
नए थ्रेड स्पॉन्स करता है, तो ये थ्रेड प्रोग्राम चलते रह सकते हैं। main
का रिटर्न प्रकार इस बिंदु पर ज्यादा समझ में नहीं आता है।
उदाहरण के लिए, इस घुमाओ अनुप्रयोगों, जहां main
प्रक्रिया आम तौर पर स्विंग धागे पर एक जीयूआई शुरू होता है, और उसके बाद main
खत्म में बहुत आम है ... लेकिन कार्यक्रम अभी भी चल रहा है।
पीटर, क्या आप स्वयं के लिए स्पष्टीकरण दे सकते हैं (वर्तमान में जावा मल्टीथ्रेडिंग की खोज कर रहे हैं) ... क्या यह केवल डेमॉन थ्रेड है जिसे मुख्य() को बाहर निकालने की अनुमति नहीं है? – Max
@ मैक्स: नहीं, मुख्य() विधि का JVM पर कोई नियंत्रण नहीं है। जब JVM प्रारंभ होता है, तो यह मुख्य() विधि चलाएगा, लेकिन जब मुख्य() समाप्त होता है, तो इसका मतलब यह नहीं है कि JVM टर्मिनल है। JVM तक सभी धागे निष्पादित करना जारी रखता है 1) Runtime.exit() को या 2 कहा जाता है) सभी सामान्य (डेमन नहीं) धागे की मृत्यु हो गई है। डेमॉन थ्रेड इस दूसरी स्थिति के लिए गिनती नहीं है। दूसरे शब्दों में ... यदि मुख्य() विधि कुछ सामान्य धागे उत्पन्न करती है, तो मुख्य() समाप्त होने पर JVM ** ** समाप्त नहीं होगा। यदि मुख्य() किसी भी थ्रेड को नहीं बढ़ाता है, तो JVM समाप्त हो जाएगा।यदि मुख्य() केवल डेमॉन थ्रेड स्पॉन्स करता है, तो मुख्य() समाप्त होने पर JVM भी समाप्त हो जाएगा। –
पीट, स्पष्टीफ के लिए धन्यवाद। – Max
- 1. जावा - सार्वजनिक स्थैतिक शून्य मुख्य()
- 2. जावा में शून्य है?
- 3. जावा में मुख्य विधि को थ्रेड क्यों निकाला जाता है?
- 4. शून्य मुख्य() के साथ गलत क्या था?
- 5. क्यों जावा मुख्य कक्षा नहीं ढूंढ सका?
- 6. जावा - मुख्य विधि में Thread.sleep
- 7. मुख्य विधि निजी क्यों है?
- 8. शून्य संरचना क्यों है?
- 9. क्यों HttpContext.Current.Handler शून्य है?
- 10. जावा शब्द शून्य है?
- 11. मुख्य स्थिर क्यों होना चाहिए?
- 12. जावा में शून्य क्या करता है?
- 13. जावा में, क्या "सार्वजनिक स्थैतिक शून्य मुख्य" का नाम बदलकर बदला जा सकता है?
- 14. int मुख्य() और int मुख्य (शून्य) के बीच अंतर?
- 15. शून्य मुख्य और int मुख्य के बीच अंतर?
- 16. मुख्य
- 17. जावा ArrayIndexOutOfBoundsException: शून्य लेकिन कोई स्टैक ट्रेस क्यों नहीं है?
- 18. मुख्य वर्ग क्यों नहीं मिला?
- 19. क्यों वैश्विक कार्य में शून्य है?
- 20. ISNaN (शून्य) == जेएस में गलत क्यों है?
- 21. जीएन ऑक्टेव में ऋणात्मक शून्य क्यों है?
- 22. self.navigationController क्यों दृश्य में शून्य है?
- 23. ग्लोबल.एक्सएक्स में क्यों HttpContext.Current.Session शून्य है?
- 24. जावा बग? Utf8 एन्कोडिंग में अतिरिक्त शून्य बाइट क्यों?
- 25. SelectSingleNode वापस शून्य क्यों है?
- 26. मेरा user_id शून्य क्यों है?
- 27. आकार (शून्य) == 1 क्यों है?
- 28. सिंक्रनाइज़ेशन Context.Current शून्य क्यों है?
- 29. getClass()। GetClassLoader() शून्य है, क्यों?
- 30. self.navigationItem.backBarButtonItem हमेशा शून्य क्यों है?
'मुख्य' किस भाषा में एक फ़्लोटिंग-पॉइंट मान देता है? –
चूंकि इस प्रश्न का शीर्ष वोट दिया गया जवाब इंगित करता है, इसके लिए एक तकनीकी कारण है, इसलिए यह मुख्य रूप से राय आधारित नहीं है। – Raedwald