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





parameters command-line-arguments main (13)


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
}

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

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

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

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




मुझे लगता है कि यह ऊपर दिए गए उत्तरों से बहुत अच्छी तरह से कवर किया गया है कि स्ट्रिंग तर्क 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 पर देख सकते हैं। ध्यान दें कि किसी भी पैरामीटर का उपयोग किया जा सकता है।




तर्कों में आमंत्रण पर जावा प्रोग्राम को पास किए गए कमांड लाइन तर्क शामिल हैं। उदाहरण के लिए, यदि मैं इस तरह के कार्यक्रम का आह्वान करता हूं:

$ java MyProg -f file.txt

फिर "file.txt" एक सरणी होगी जिसमें स्ट्रिंग्स "-f" और "file.txt"




निम्नलिखित उत्तर मेरी समझ और कुछ परीक्षण आधारित है।

स्ट्रिंग क्या है [] तर्क?

उत्तर->

स्ट्रिंग [] -> जैसा कि हम जानते हैं कि यह एक साधारण स्ट्रिंग सरणी है।

तर्क -> एक सरणी का नाम है जो कुछ भी हो सकता है (उदाहरण के लिए ए, आर, तर्क, पैरामीटर, पैरामीटर) कंपाइलर और निष्पादित के साथ कोई समस्या नहीं है और मैंने भी परीक्षण किया है।

उदाहरण के लिए
1) सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क)

2) सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] पैरामीटर)

आप इन तर्कों का उपयोग कब करेंगे?

उत्तर->

मुख्य कार्य डेवलपर्स द्वारा बहुत समझदारी से डिजाइन किया गया है। वास्तविक सोच बहुत गहरी है। जिसे मूल रूप से कमांड लाइन तर्क के आधार पर सी और सी ++ के विचाराधीन विकसित किया गया है लेकिन आजकल कोई भी इसका अधिक उपयोग नहीं करता है।

चीज 1- उपयोगकर्ता कमांड लाइन से किसी भी प्रकार का डेटा दर्ज कर सकता है संख्या या स्ट्रिंग हो सकता है और इसे संकलक द्वारा स्वीकार करने के लिए जरूरी है जिसे डेटाटाइप का उपयोग करना चाहिए? बात 2 देखें

चीज 2- स्ट्रिंग डेटाटाइप है जो जावा में int, long, float, double, byte, shot, char जैसे सभी प्राचीन डेटाटाइप का समर्थन करती है। आप इसे किसी भी आदिम डेटाटाइप में आसानी से पार्स कर सकते हैं।

उदाहरण के लिए निम्नलिखित प्रोग्राम संकलित और निष्पादित किया गया है और मैंने भी परीक्षण किया है।

अगर इनपुट है -> 1 1

// one class needs to have a main() method
public class HelloWorld
{
  // arguments are passed using the text field below this editor
  public static void main(String[] parameter)
  {    
System.out.println(parameter[0] + parameter[1]); // Output is 11

//Comment out below code in case of String
    System.out.println(Integer.parseInt(parameter[0]) + Integer.parseInt(parameter[1])); //Output is 2
    System.out.println(Float.parseFloat(parameter[0]) + Float.parseFloat(parameter[1])); //Output is 2.0    
    System.out.println(Long.parseLong(parameter[0]) + Long.parseLong(parameter[1])); //Output is 2    
    System.out.println(Double.parseDouble(parameter[0]) + Double.parseDouble(parameter[1])); //Output is 2.0    

  }
}



मैं टूट जाऊंगा

public static void main(String args[])

भागों में।

"सार्वजनिक" का अर्थ है कि मुख्य () कहीं से भी कहा जा सकता है।

"स्थैतिक" का अर्थ है कि मुख्य () किसी विशिष्ट वस्तु से संबंधित नहीं है

"शून्य" का अर्थ है कि मुख्य () कोई मूल्य नहीं देता है

"मुख्य" एक समारोह का नाम है। मुख्य () विशेष है क्योंकि यह कार्यक्रम की शुरुआत है।

"स्ट्रिंग []" का मतलब स्ट्रिंग की एक सरणी है।

"तर्क" स्ट्रिंग का नाम है [] (मुख्य () के शरीर के भीतर)। "तर्क" विशेष नहीं है; आप इसे और कुछ भी नाम दे सकते हैं और कार्यक्रम वही काम करेगा।

  • String[] args संग्रह है, जो एक स्पेस से अलग होता है, जिसे टर्मिनल पर प्रोग्राम में टाइप किया जा सकता है। इससे अधिक बार, शुरुआतकर्ता इस चर का उपयोग नहीं करेगा, लेकिन यह हमेशा मामले में हमेशा होता है।



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

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

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

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

[ "एक दो" ]

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

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

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




स्टाइल dataType[] arrayRefVar को प्राथमिकता दी जाती है। स्टाइल dataType arrayRefVar[] सी / सी ++ भाषा से आता है और सी / सी ++ प्रोग्रामर को समायोजित करने के लिए जावा में अपनाया गया था।




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

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

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

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



जावा तर्क में String ऑब्जेक्ट्स की सरणी के रूप में आपूर्ति की गई कमांड-लाइन तर्क शामिल हैं।

दूसरे शब्दों में, यदि आप java MyProgram one two प्रोग्राम java MyProgram one two रूप में अपना प्रोग्राम चलाते हैं तो java MyProgram one two में ["one", "two"]

यदि आप args की सामग्री को आउटपुट करना चाहते हैं, तो आप उन्हें इस तरह से लूप कर सकते हैं ...

public class ArgumentExample {
    public static void main(String[] args) {
        for(int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}



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

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

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

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

}

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

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




जब कंसोल से जावा क्लास निष्पादित किया जाता है, तो मुख्य विधि जिसे कहा जाता है। ऐसा होने के लिए, इस मुख्य विधि की परिभाषा होना चाहिए

public static void main(String [])

तथ्य यह है कि इस स्ट्रिंग सरणी को तर्क कहा जाता है एक मानक सम्मेलन है, लेकिन कड़ाई से जरूरी नहीं है। आप इस सरणी को कमांड लाइन पर पॉप्युलेट करेंगे जब आप अपने प्रोग्राम का आह्वान करेंगे

java MyClass a b c

इन्हें आमतौर पर आपके प्रोग्राम के विकल्पों को परिभाषित करने के लिए उपयोग किया जाता है, उदाहरण के लिए फाइलें लिखने या पढ़ने के लिए।




मुख्य () स्थिर है क्योंकि; उस समय एप्लिकेशन के जीवन चक्र में, एप्लिकेशन स्टैक प्रकृति में प्रक्रियात्मक है क्योंकि अभी तक कोई ऑब्जेक्ट नहीं है।

यह एक साफ स्लेट है। आपका आवेदन इस बिंदु पर चल रहा है, यहां तक ​​कि किसी वस्तु को घोषित किए बिना (याद रखें, प्रक्रियात्मक और ओओ कोडिंग पैटर्न हैं)। आप डेवलपर के रूप में, एप्लिकेशन को ऑब्जेक्ट-ओरिएंटेड समाधान में अपनी ऑब्जेक्ट्स के उदाहरण बनाकर और अंदर संकलित कोड के आधार पर बदल देते हैं।

ऑब्जेक्ट उन्मुख लाखों स्पष्ट कारणों से महान है। हालांकि, वे दिन थे जब अधिकांश वीबी डेवलपर्स नियमित रूप से अपने कोड में "गोटो" जैसे कीवर्ड का इस्तेमाल करते थे। "गोटो" वीबी में एक प्रक्रियात्मक कमांड है जिसे इसके ओओ समकक्ष द्वारा प्रतिस्थापित किया जाता है: विधि आमंत्रण।

आप शुद्ध स्वतंत्रता के रूप में स्थिर प्रवेश बिंदु (मुख्य) को भी देख सकते हैं। यदि जावा किसी ऑब्जेक्ट को तुरंत चालू करने के लिए पर्याप्त था और केवल उस उदाहरण को आपके पास चलाने के लिए प्रस्तुत करता था, तो आपके पास कोई प्रक्रिया नहीं होगी लेकिन प्रक्रियात्मक ऐप लिखने के लिए कोई विकल्प नहीं होगा। जैसा कि यह जावा के लिए ध्वनि के रूप में अकल्पनीय है, यह संभव है कि कई परिदृश्य हैं जो प्रक्रियात्मक दृष्टिकोण के लिए कहते हैं।

यह शायद एक बहुत अस्पष्ट जवाब है। याद रखें, "कक्षा" केवल अंतर-संबंधित कोड का संग्रह है। "इंस्टेंस" उस वर्ग की एक अलग, जीवित और सांस लेने वाली स्वायत्त पीढ़ी है।





java parameters command-line-arguments main