[java] "स्ट्रिंग तर्क []" क्या है? मुख्य विधि जावा में पैरामीटर



Answers

वे जावा में कमांड लाइन तर्क के लिए हैं।

दूसरे शब्दों में, यदि आप भागते हैं

जावा माइप्रोग्राम एक दो

फिर args में शामिल हैं:

[ "एक दो" ]

public static void main(String [] args) {
    String one = args[0]; //=="one"
    String two = args[1]; //=="two"
}

इसका कारण यह है कि अपने आवेदन को किसी विशेष तरीके से चलाने के लिए कॉन्फ़िगर करना है या इसे आवश्यक जानकारी के कुछ टुकड़े प्रदान करना है।

यदि आप जावा के लिए नए हैं, तो मैं आधिकारिक ओरेकल के जावा टीएम ट्यूटोरियल के माध्यम से पढ़ने की अत्यधिक अनुशंसा करता हूं।

Question

मैं जावा में प्रोग्राम लिखना शुरू कर रहा हूं। निम्नलिखित जावा कोड का क्या अर्थ है?

public static void main(String[] args)
  • String[] args क्या है String[] args ?

  • आप इन args उपयोग कब करेंगे?

स्रोत कोड और / या उदाहरणों को अमूर्त स्पष्टीकरण पर प्राथमिकता दी जाती है




आप सबसे आधुनिक आईडीई का उपयोग करके अपने कार्यक्रम में तर्क शामिल कर सकते हैं

उदाहरण के लिए इंटेलिज में आप तर्क करके तर्क शामिल कर सकते हैं:
चलाएं -> कॉन्फ़िगरेशन संपादित करें ... -> कॉन्फ़िगरेशन टैब -> प्रोग्राम तर्क

आप यहां रिक्त स्थान से अलग होने के लिए सबसे आम देख सकते हैं और यदि किसी नाम में रिक्त स्थान हैं तो आप इसे लपेटने के लिए डबल कोट्स का उपयोग कर सकते हैं।

public static void main(String[] args) {
     for(String arg: args) {
          System.out.println("arg " + arg);
     }

}

यह स्निपेट प्रिंट करेगा:

तर्क तर्क 1
तर्क तर्क 2
तर्क तर्क नाम 3




मुझे लगता है कि यह ऊपर दिए गए उत्तरों से बहुत अच्छी तरह से कवर किया गया है कि स्ट्रिंग तर्क String args[] केवल स्ट्रिंग तर्कों की एक सरणी है जिसे आप इसे चलाने पर अपने एप्लिकेशन को पास कर सकते हैं। पूरा होने के लिए, मैं यह भी जोड़ सकता हूं कि main विधि में पारित विधि पैरामीटर को टाइप करने के लिए यह भी मान्य है कि स्ट्रिंग का एक चर तर्क (varargs):

public static void main (String... args)

दूसरे शब्दों में, main विधि को एक विधि तर्क के रूप में या तो एक स्ट्रिंग सरणी ( String args[] तर्क String args[] ) या varargs ( String... args ) स्वीकार करना चाहिए। और नाम के साथ कोई जादू नहीं है या तो args । आप नीचे दिए गए उदाहरणों के अनुसार arguments या यहां तक ​​कि freddiefujiwara लिख सकते हैं .:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)




जब आप अपना कोड पूरा करते हैं, तो आप इसे एक्सटेंशन .java के साथ फ़ाइल में बदल देंगे, जिसे इसे डबल क्लिक करके चलाया जा सकता है, लेकिन एक कंसोल (मैक पर टर्मिनल, cmd.exe पर विंडोज़) पर भी उपयोगकर्ता को ऐसा करने देता है बहुत सी बातें। एक बात यह है कि वे कंसोल संदेश (System.out.print या System.out.println) देख सकते हैं, जिन्हें वे नहीं देख सकते हैं कि वे डबल क्लिक करते हैं या नहीं। एक और चीज जो वे कर सकते हैं वह पैरामीटर निर्दिष्ट करते हैं, इसलिए आम तौर पर आप लाइन का उपयोग करेंगे

java -jar MyCode.jar

कार्यक्रम के फ़ोल्डर में नेविगेट करने के बाद

cd C:My/Code/Location

खिड़कियों पर या

cd My/Code/Location

मैक पर (ध्यान दें कि मैक कम गुंजाइश है) कोड चलाने के लिए, लेकिन पैरामीटर निर्दिष्ट करने के लिए आप उपयोग करेंगे

java -jar MyCode.jar parameter1 parameter2

Argers सरणी में संग्रहीत इन पैरामीटर, जिन्हें आप अपने प्रोग्राम में उपयोग कर सकते हैं, आप उपयोगकर्ता को विशेष पैरामीटर को नियंत्रित करने की अनुमति देना चाहते हैं जैसे कि किस फ़ाइल का उपयोग करना है या प्रोग्राम कितनी मेमोरी हो सकती है। यदि आप एक सरणी का उपयोग कैसे करना चाहते हैं, तो आप शायद इस साइट पर कोई विषय ढूंढ सकते हैं या बस इसे Google पर देख सकते हैं। ध्यान दें कि किसी भी पैरामीटर का उपयोग किया जा सकता है।




यहां तक ​​कि ओपी केवल String[] args बारे में बात कर रहा है, मैं public static void main(String[] args) एक पूरा उदाहरण देना चाहता हूं।

Public : एक एक्सेस संशोधक है , जो परिभाषित करता है कि इस विधि को कौन एक्सेस कर सकता है। सार्वजनिक का अर्थ है कि यह विधि किसी भी वर्ग द्वारा सुलभ होगी (यदि अन्य वर्ग इस कक्षा तक पहुंचने में सक्षम हैं।)।

Static : एक ऐसा कीवर्ड है जो कक्षा से संबंधित चीज़ की पहचान करता है। इसका मतलब है कि दिया गया विधि या चर उदाहरण से संबंधित नहीं है लेकिन क्लास से संबंधित है। इसे कक्षा के उदाहरण के बिना पहुंचा जा सकता है।

Void : विधि के रिटर्न प्रकार को परिभाषित करने के लिए प्रयोग किया जाता है। यह परिभाषित करता है कि विधि क्या कर सकती है। शून्य का मतलब है कि विधि कोई मूल्य वापस नहीं करेगा।

main : विधि का नाम है। इस विधि का नाम किसी विशेष हस्ताक्षर वाले एप्लिकेशन के लिए प्रारंभिक बिंदु के रूप में JVM द्वारा खोजा जाता है।

String[] args : मुख्य विधि का पैरामीटर है।

यदि आप जेडीके स्रोत कोड में देखते हैं (jdk-src \ j2se \ src \ share \ bin \ java.c):

/* Get the application's main method */
mainID = (*env)->GetStaticMethodID(env, mainClass, "main",
                   "([Ljava/lang/String;)V");
...
{    /* Make sure the main method is public */
...
mods = (*env)->CallIntMethod(env, obj, mid);
if ((mods & 1) == 0) { /* if (!Modifier.isPublic(mods)) ... */
    message = "Main method not public.";
    messageDest = JNI_TRUE;
    goto leave;
...

आप देख सकते हैं कि जावा में प्रारंभिक विधि को main नाम दिया जाना चाहिए और इसमें विशिष्ट हस्ताक्षर public static void main(String[] args)

कोड हमें यह भी बताता है कि public static void main(String[] args) तय नहीं है, यदि आप कोड को (jdk-src \ j2se \ src \ share \ bin \ java.c) में दूसरे हस्ताक्षर में बदलते हैं, तो यह होगा काम लेकिन इसे बदलने से आपको जावा specs वजह से अन्य संभावित समस्याएं specs

ऑफटॉपिक: ओपी ने इस सवाल से पूछा 7 साल हो गए हैं, मेरा अनुमान है कि ओपी अब तक अपने प्रश्न का उत्तर दे सकता है।




String [] args यह भी है कि आप जावा में स्ट्रिंग्स की सरणी कैसे घोषित करते हैं।

इस विधि हस्ताक्षर में, सरणी args को विधि के साथ भर दिया जाएगा जब विधि कहा जाता है (जैसा कि यहां अन्य उदाहरण दिखाए जाते हैं)। चूंकि आप सीख रहे हैं, हालांकि यह समझने योग्य है कि यह args सरणी है जैसे कि आपने स्वयं को एक विधि में बनाया है, जैसा कि इसमें है:

public void foo() {
    String [] args = new String[2];
    args[0] = "hello";
    args[1] = "every";

    System.out.println("Output: " + args[0] + args[1]);

    // etc... the usage of 'args' here and in the main method is identical
}



सरल आम आदमी की भाषा में स्पष्टीकरण।

जब हम अपने जेवीएम को कक्षा के नाम पर निर्देशित करते हैं तो मुख्य विधि हमें कुछ तर्क प्रदान करने की अपेक्षा करती है। इसका मतलब है, मान लीजिए कि आपका फ़ाइल नाम Try.java है, अब इसे कमांड प्रॉम्प्ट में निष्पादित करने के लिए आप "javaac try.java" को संकलित करने के लिए "जावा कोशिश" के बाद संकलित करने के लिए लिखते हैं। अब मान लीजिए कि "जावा कोशिश करें" लिखने के बजाय आप "जावा कोशिश 1" लिखते हैं। यहां आपने एक तर्क "1" पारित किया है। यह आपके मुख्य विधि द्वारा लिया जाएगा भले ही आप इसे अपने कोड में उपयोग न करें।

यदि आप यह जांचना चाहते हैं कि आपकी मुख्य विधि ने वास्तव में तर्क "1" लिया है या नहीं। बस, अपनी मुख्य विधि के अंदर निम्न टाइप करें:

for(int i = 0; i < args.length; i++) {
        System.out.println("Argument is: "+args[i]);
    }





Related