2011-09-06 31 views
5

हम को main() विधि पर पैरामीटर दे सकते हैं या नहीं चुन सकते हैं। लेकिन अगर हम पर्याप्त तर्क पारित किए बिना किसी भी अन्य पैरामीटर विधि को कॉल करेंगे, तो यह हमें एक त्रुटि देगा।जब हम कोई कमांड लाइन तर्क नहीं देते हैं तो हमें कोई त्रुटि क्यों नहीं मिलती है?

main(String[] args) विधि के साथ ऐसा क्यों नहीं है?

+0

क्या आप अधिक स्पष्ट हो सकते हैं, आप पैरामीटर के साथ और बिना एप्लिकेशन को कैसे निष्पादित कर रहे हैं? – medopal

+3

संबंधित उत्तर, आप इस 'सार्वजनिक शून्य myMethod (स्ट्रिंग ... सरणी) की तरह ही बना सकते हैं इस तरह से आप 0 की तर्क संख्या को भी पास कर सकते हैं, और यह त्रुटि नहीं देगा। – medopal

उत्तर

1

क्योंकि Main विशेष है और स्वचालित रूप से दिए गए कुछ भी नहीं होने पर String array खाली लेता है। जैसा कि तर्क के बिना main() पर कॉल करने का सटीक वर्णन करता है। प्रणाली इसे एक सुविधा के रूप में प्रदान करता है।

+0

गलत। 'शून्य' के साथ इसके साथ कुछ लेना देना नहीं है। – aioobe

1

जावा मुख्य विधि को तर्क के साथ स्वयं कॉल करता है, इसलिए इसमें कोई त्रुटि नहीं है, भले ही हम तर्क के बिना "कॉल" करते हैं।

4

स्ट्रिंग की एक सरणी हमेशा पारित होती है, भले ही कोई कमांड लाइन पैरामीटर मौजूद न हो। उस स्थिति में सरणी की लंबाई 0 जो आप के माध्यम से

public static void main(String[] args) { 
    if (args.length == 0) { 
     System.out.println("no parameters were passed"); 
    } 
} 
10
public static void main(String[] args) 

main हमेशा अपने पैरामीटर, जो String की एक सरणी है प्राप्त करता है खुद के लिए परीक्षण कर सकते हैं है। यदि आप कोई कमांड लाइन तर्क नहीं देते हैं, तो args खाली है, लेकिन यह अभी भी वहां है।

2

जैसा कि आप देखते हैं, मुख्य एक फ़ंक्शन तर्क को छोड़ देता है - जो तारों की एक सरणी है। JVM मुख्य कार्य में तारों की सरणी के रूप में किसी भी कमांड लाइन तर्क को पारित करने का ख्याल रखता है। यदि कोई तर्क नहीं दिया गया है, तो खाली सरणी पारित की जाती है - लेकिन यह अभी भी वहां है।

साथ ही आप अपने स्वयं के समारोह इस रूप में परिभाषित किया जा सकता था:

void myMain(String args[]) { 
    for(int i = 0; i < args.length; i++) { 
     System.out.println(args[i]); 
    } 
} 

फिर आप इस समारोह कॉल कर सकते हैं, गुजर तीन कमांड लाइन तर्क की नकल:

String a[] = {"foo", "bar", "bah"}; 
myMain(a); 

या आप स्थिति का अनुकरण कर सकते हैं जहां कोई कमांड लाइन तर्क नहीं दिया जाता है:

String a[] = {}; 
myMain(a); 

आप 01 पास भी कर सकते हैंअपने कार्य करने के लिए वास्तविक मुख्य से और यह परवाह किए बिना काम करेंगे अगर कोई पैरामीटर या दिए गए थे नहीं:

public static void main(String[] args) { 
    myMain(args); 
} 

नोट वहाँ myMain में कोई नल पॉइंटर की जांच इसलिए यदि आप इसे पारित एक null यह एनपीई फेंक होगा कि।

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

  • कोई संबंधित समस्या नहीं^_^