"স্ট্রিং আরগস []" কী? প্রধান পদ্ধতি জাভা পরামিতি


315

আমি জাভাতে প্রোগ্রাম লিখতে শুরু করছি। নিম্নলিখিত জাভা কোডটির অর্থ কী?

public static void main(String[] args)
  • কী String[] args?

  • আপনি এই কখন ব্যবহার করবেন args?

উত্স কোড এবং / অথবা উদাহরণগুলি বিমূর্ত ব্যাখ্যাগুলির চেয়ে বেশি পছন্দ করা হয়

উত্তর:


302

জাভাতে অবজেক্টের অ্যারে হিসাবে argsসরবরাহিত কমান্ড-লাইন যুক্তি রয়েছে containsString

অন্য কথায়, আপনি যদি নিজের প্রোগ্রামটি চালান java MyProgram one twoতবে argsতা ধারণ করবে ["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]);
        }
    }
}

51
লক্ষণীয় বিষয় হ'ল argsঅগত্যা নামকরণ করার দরকার নেই args(আপনি যা খুশি তাই এটি নামকরণ করতে পারেন) - যদিও কনভেনশনটি অনুসরণ করা ভাল। আপনি String... argsসময়ে সময়ে দেখতে পাবেন যা সমান।
ভাইকিংস্টিভ


1
@ ড্যানিয়েল, argsওএস নির্বিশেষে স্থান দ্বারা পৃথকীকরণের নিশ্চয়তা কি ?
পেসারিয়ার

@ পেসারিয়ার দুঃখিত, আমি অনেক দেরি করেছি এবং আমার কোনও উত্স নেই তবে আমি দৃ strongly়ভাবে বিশ্বাস করি যে তারা they এটি আমার কাছে মনে হচ্ছে যেন জাভা (.exe) আর্গুমেন্টগুলি পরিচালনা করছে, অন্তর্নিহিত শেল / টার্মিনাল নয়। নিন -versionউদাহরণস্বরূপ, এটা java -versionএবং java.exe -version, কিন্তু না java.exe /version(প্রচেষ্টা প্রধান বর্গ লোড করতে .version)। কেউ যদি এ নিয়ে হোঁচট খায় তবে কেবল আমার 2 সেন্ট।
লুক

1
@ লুক এটি সত্য হতে পারে না, ইউনিক্স সিস্টেমে অন্তত নয়। সেখানে শেলটি শেলের নিয়ম অনুসারে প্রোগ্রামটি ইতিমধ্যে বিভক্ত হয়ে যায় (সেই অনুসারে উদ্ধৃতি / পলায়ন সহ) প্রোগ্রামটির পক্ষে (এই ক্ষেত্রে জাভা ইন্টারপ্রেটার) আসল আনস্প্লিট কমান্ড লাইনটি অ্যাক্সেস করার কোনও উপায় নেই এবং এটি করার ইচ্ছাও করা উচিত নয় কারণ এটি ব্যবহারকারীর বাইরে থাকা জাহান্নামকে বিভ্রান্ত করবে।
রেজনার্গ

112

সেগুলি জাভায় কমান্ড-লাইন আর্গুমেন্টের জন্য।

অন্য কথায়, যদি আপনি চালান

জাভা মাইপ্রোগ্রাম এক

তারপরে argsরয়েছে:

[ "এক দুই" ]

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

এর কারণটি হ'ল আপনার অ্যাপ্লিকেশনটিকে কোনও নির্দিষ্ট উপায়ে চালানোর জন্য কনফিগার করা বা এটি প্রয়োজনীয় কিছু তথ্য সরবরাহ করা।


আপনি যদি জাভাতে নতুন হন, আমি অফিশিয়াল ওরাকলের জাভা টিএম টিউটোরিয়ালগুলির মাধ্যমে পড়ার পরামর্শ দিচ্ছি ।


45

argsঅনুরোধের পরে জাভা প্রোগ্রামে পাঠানো কমান্ড-লাইন যুক্তি রয়েছে। উদাহরণস্বরূপ, যদি আমি প্রোগ্রামটির মতো অনুরোধ করি:

$ java MyProg -f file.txt

তারপরে argsস্ট্রিং "-f"এবং সমন্বিত একটি অ্যারে থাকবে "file.txt"


উত্তরের জন্য ধন্যবাদ.
চাকলাদার আসফাক আরেফি

javac MyProg.javaচালানোর চেয়ে আমাকে আগে আমার কোডটি সংকলন করতে হয়েছিল java MyProg -f file.txt। এর কোনও কারণ আছে, কারণ উত্তরের কোথাও এর উল্লেখ নেই?
stanimirsp

19

নিম্নলিখিত উত্তরটি আমার বোধগম্যতা এবং কিছু পরীক্ষার উপর ভিত্তি করে।

স্ট্রিং [] আরগস কী?

উত্তর->

স্ট্রিং [] -> আমরা জানি যে এটি একটি সাধারণ স্ট্রিং অ্যারে।

আরগস -> একটি অ্যারের নাম এটি কোনও কিছু হতে পারে (যেমন, এ, আর, আর্গুমেন্ট, প্যারাম, প্যারামিটার) সংকলক এবং সম্পাদিত এবং আমি পরীক্ষা করেও কোনও সমস্যা নেই।

উদাহরণস্বরূপ
1) পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] যুক্তি)

2) পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং [] প্যারামিটার)

আপনি কখন এই আরগ ব্যবহার করবেন?

Ans->

মূল ফাংশনটি বিকাশকারীরা খুব বুদ্ধিমানভাবে ডিজাইন করেছেন। আসল চিন্তাভাবনা খুব গভীর। যা মূলত কমান্ড লাইন আর্গুমেন্টের ভিত্তিতে সিএন্ড সি ++ এর বিবেচনায় বিকাশিত তবে আজকাল কেউ এটিকে বেশি ব্যবহার করে না।

বিষয় 1- ব্যবহারকারী কমান্ড লাইন থেকে যে কোনও ধরণের ডেটা প্রবেশ করতে পারে নম্বর বা স্ট্রিং হতে পারে এবং সংকলক দ্বারা এটি গ্রহণ করার জন্য আমাদের কোন ডেটাটাইপ ব্যবহার করা উচিত? জিনিসটি দেখুন 2

থিং 2 - স্ট্রিং হ'ল ডেটাটাইপ যা জাভাতে ইনট, লং, ফ্লোট, ডাবল, বাইট, শট, চরের মতো আদিম ডেটাটাইপগুলিকে সমর্থন করে। আপনি যেকোন আদিম ডেটাটাইপে এটি সহজেই পার্স করতে পারেন।

উদাহরণস্বরূপ নিম্নলিখিত প্রোগ্রামটি সংকলিত এবং সম্পাদিত হয়েছে এবং আমি পরীক্ষাও করেছি।

যদি ইনপুট হয় -> 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    

  }
}

13

এমনকি ওপি কেবল এই বিষয়েই কথা বলছে String[] args, আমি এর একটি সম্পূর্ণ উদাহরণ দিতে চাই public static void main(String[] args)

Public: একটি অ্যাক্সেস মডিফায়ার , যা এই পদ্ধতিতে অ্যাক্সেস করতে পারে তা নির্ধারণ করে। সর্বজনীন মানে এই পদ্ধতিটি যে কোনও শ্রেণীর দ্বারা অ্যাক্সেসযোগ্য হবে (যদি অন্য শ্রেণিগুলি এই শ্রেণিতে অ্যাক্সেস করতে সক্ষম হয়))

Static: ক্লাস সম্পর্কিত জিনিস চিহ্নিত করে এমন একটি কীওয়ার্ড। এর অর্থ প্রদত্ত পদ্ধতি বা ভেরিয়েবল উদাহরণ সম্পর্কিত নয় তবে শ্রেণি সম্পর্কিত। এটি কোনও শ্রেণীর উদাহরণ তৈরি না করেই অ্যাক্সেস করা যায়।

Void: পদ্ধতির রিটার্ন টাইপ সংজ্ঞায়িত করতে ব্যবহৃত হয়। এটি পদ্ধতিটি কী ফিরে আসতে পারে তা নির্ধারণ করে। অকার্যকর অর্থ পদ্ধতিটি কোনও মান ফেরত দেবে না।

main: পদ্ধতিটির নাম। এই পদ্ধতির নামটি কেবলমাত্র একটি নির্দিষ্ট স্বাক্ষর সহ কোনও অ্যাপ্লিকেশনটির প্রারম্ভিক পয়েন্ট হিসাবে জেভিএম অনুসন্ধান করেছে।

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) তে অন্য স্বাক্ষরে পরিবর্তন করেন, এটি কাজ করবে তবে এটি পরিবর্তন করা আপনাকে অন্যান্য সম্ভাব্য সমস্যা দেয় কারণ জাভা চশমা

অফটপিক: ওপি এই প্রশ্নটি জিজ্ঞাসা করে 7 বছর হয়ে গেছে, আমার অনুমান যে ওপি এখনই তার নিজের প্রশ্নের উত্তর দিতে পারে।


12

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
}

12

আমি ব্রেক আপ হবে

public static void main(String args[])

অংশে.

"সর্বজনীন" এর অর্থ প্রধান () কে যে কোনও জায়গা থেকে কল করা যায়।

"স্ট্যাটিক" এর অর্থ প্রধান () কোনও নির্দিষ্ট বস্তুর সাথে সম্পর্কিত নয়

"শূন্য" এর অর্থ প্রধান () কোনও মূল্য দেয় না

"প্রধান" একটি ফাংশনের নাম। প্রধান () বিশেষ কারণ এটি প্রোগ্রামের সূচনা।

"স্ট্রিং []" এর অর্থ স্ট্রিংয়ের একটি অ্যারে।

"আরগস" হল স্ট্রিংয়ের নাম [] (মেইনের () মূল অংশের মধ্যে)। "আরগস" বিশেষ নয়; আপনি এটি অন্য কোনও নাম রাখতে পারেন এবং প্রোগ্রামটি একই কাজ করবে।

  • String[] argsস্ট্রিংসের একটি সংগ্রহ, এটি একটি স্পেস দ্বারা পৃথক করা, যা টার্মিনালে প্রোগ্রামে টাইপ করা যেতে পারে। না চেয়ে আরও বেশিরভাগ সময়, শিক্ষানবিশ এই পরিবর্তনশীলটি ব্যবহার করবে না, তবে এটি সর্বদা সেখানে উপস্থিত থাকে।

9

আপনি যখন আপনার কোডটি সমাপ্ত করবেন, আপনি এটিকে এক্সটেনশন। জাভা সহ একটি ফাইলে পরিণত করবেন যা এটিকে ডাবল ক্লিক করে চালানো যেতে পারে, তবে এটি একটি কনসোল জুড়েও (উইন্ডোজে ম্যাকের উপর একটি টার্মিনাল, cmd.exe) যা ব্যবহারকারীকে করতে দেয় অনেক কিছু. একটি জিনিস হ'ল তারা কনসোল বার্তা (System.out.print বা System.out.println) দেখতে পাবে যা তারা দেখতে পাবে না যদি তারা ডাবল ক্লিক করে। তারা করতে পারে এমন অন্য একটি বিষয় হল প্যারামিটারগুলি নির্দিষ্ট করা, তাই সাধারণত আপনি লাইনটি ব্যবহার করবেন would

java -jar MyCode.jar

প্রোগ্রামের ফোল্ডারে সাথে নেভিগেট করার পরে

cd C:My/Code/Location

উইন্ডোজ বা

cd My/Code/Location

ম্যাকটিতে (লক্ষ্য করুন যে ম্যাকটি কম চতুর) তবে চালানোর কোডটি নির্দিষ্ট করে নিন you

java -jar MyCode.jar parameter1 parameter2

আরগস অ্যারেতে সংরক্ষিত এই প্যারামিটারগুলি, যা আপনি আপনার প্রোগ্রামে ব্যবহার করতে পারেন তা হল আপনি ব্যবহারকারীকে কোন ফাইলটি ব্যবহার করতে হবে বা প্রোগ্রামটিতে কতটা মেমরি থাকতে পারে তার মতো বিশেষ পরামিতিগুলি নিয়ন্ত্রণ করতে দিতে চান। আপনি যদি কোনও অ্যারে কীভাবে ব্যবহার করতে চান তা জানতে চাইলে আপনি সম্ভবত এই সাইটে কোনও বিষয় খুঁজে পেতে পারেন বা কেবল গুগল করতে পারেন। নোট করুন যে কোনও পরামিতি ব্যবহার করা যেতে পারে।


9

সাধারণ সাধারণ মানুষের ভাষায় ব্যাখ্যা।

মূল পদ্ধতিটি আশা করে যে আমরা যখন আমাদের জেভিএমকে শ্রেণীর নামের দিকে পরিচালিত করি তখন আমরা কিছু যুক্তি সরবরাহ করব। এর অর্থ, ধরুন আপনার ফাইলটির নাম ট্রাই.জভা, এখন এই কমান্ড প্রম্পটটি কার্যকর করতে আপনি "জাভ্যাক ট্রাই.জভা" লিখুন এবং "জাভা ট্রাই" চালনার জন্য সংকলিত হবে। এখন ধরা যাক কেবল "জাভা চেষ্টা করুন" লেখার পরিবর্তে আপনি "জাভা ট্রাই 1" লেখেন। এখানে আপনি একটি যুক্তি "1" দিয়ে গেছেন। আপনি যদি আপনার কোডটিতে এটি ব্যবহার না করেন তবে এটি আপনার মূল পদ্ধতি দ্বারা নেওয়া হবে।

আপনি যদি পরীক্ষা করতে চান যে আপনার মূল পদ্ধতিটি আসলে "1" যুক্তিটি গ্রহণ করেছে কিনা। সহজভাবে, আপনার মূল পদ্ধতির ভিতরে নিম্নলিখিত টাইপ করুন:

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

7

আমি মনে করি এটি উপরের উত্তরগুলি দ্বারা বেশ ভালভাবে আচ্ছাদিত String args[]simply এটি কেবল স্ট্রিং আর্গুমেন্টের একটি অ্যারে যা আপনি যখন প্রয়োগ করেন তখন আপনি এটি প্রয়োগ করতে পারেন। সমাপ্তির জন্য, আমি যুক্ত করতে পারি যে mainস্ট্রিং টাইপের ভেরিয়েবল আর্গুমেন্ট (ভারার্গস) হিসাবে পদ্ধতিতে পাস হওয়া প্যারামিটারটি সংজ্ঞায়িত করাও বৈধ :

public static void main (String... args)

অন্য কথায়, mainপদ্ধতিটি অবশ্যই একটি স্ট্রিং অ্যারে ( String args[]) বা ভারার্গস ( String... args) পদ্ধতি হিসাবে যুক্তি হিসাবে গ্রহণ করতে পারে। এবং নামটির সাথে কোনও জাদুও নেই args। আপনি পাশাপাশি লিখতে পারেন argumentsএমনকি freddiefujiwaraনীচের ই.জি.এস. তেও দেখানো হয়েছে:

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)


6

কনসোল থেকে যখন জাভা ক্লাস চালানো হয়, তখন মূল পদ্ধতিটি যাকে বলে। এটি হওয়ার জন্য, এই মূল পদ্ধতির সংজ্ঞা অবশ্যই হওয়া উচিত

public static void main(String [])

এই স্ট্রিং অ্যারেটিকে আরগস বলা হয় তা সত্য একটি কনভেনশন, তবে কঠোরভাবে প্রয়োজন হয় না। আপনি আপনার প্রোগ্রামটি চালু করতে কমান্ড লাইনে এই অ্যারেটি তৈরি করবেন

java MyClass a b c

এগুলি সাধারণত আপনার প্রোগ্রামের বিকল্পগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়, উদাহরণস্বরূপ ফাইলগুলি লিখতে বা পড়তে।


6

মধ্যে প্রকাশ্য স্ট্যাটিক ভয়েড মেন (স্ট্রিং args []) args কনসোল লাইন আর্গুমেন্ট যার ডাটা টাইপ স্ট্রিং এর একটি অ্যারে। এই অ্যারেতে, আপনি নীচের মতো প্রদর্শিত কমান্ড লাইনে অনুরোধ করে বিভিন্ন স্ট্রিং আর্গুমেন্ট সংরক্ষণ করতে পারেন: জাভা মাইপ্রগ্রাম শান রয়্যাল তারপর শান এবং রয়্যাল অ্যারে হিসাবে আর্গ হিসাবে সংরক্ষণ করা হবে [0] = "শান"; ARG [1] = "রয়েল"; আপনি যখন প্রোগ্রামটি কমান্ড লাইনে তাদের কল করবেন না তখন আপনি নিজেই এটি প্রোগ্রামের ভিতরেও করতে পারেন।


3

শৈলী dataType[] arrayRefVarপছন্দ হয়। শৈলীটি dataType arrayRefVar[]সি / সি ++ ভাষা থেকে আসে এবং জা / সি / সি ++ প্রোগ্রামারদের থাকার জন্য গৃহীত হয়েছিল।


1

দ্য String[] argsপরামিতি পরামিতি হিসাবে পাস স্ট্রিং একটি অ্যারে যখন আপনি OS এ কমান্ড লাইন মাধ্যমে আপনার অ্যাপ্লিকেশন চলমান হয়।

সুতরাং, আপনি কোনও myApp.jarজাভা অ্যাপ্লিকেশন সংকলন এবং প্যাকেজ করেছেন তা কল্পনা করুন । আপনি অবশ্যই নিজের অ্যাপ্লিকেশনটিকে ওএস-এ ডাবল ক্লিক করে চালাতে পারেন, তবে আপনি কমান্ড লাইন পদ্ধতিতেও এটি চালাতে পারেন, (যেমন লিনাক্সে):

user@computer:~$ java -jar myApp.jar

যখন আপনি আপনার অ্যাপ্লিকেশনটিকে কিছু প্যারামিটারগুলি পাস করার জন্য কল করবেন, যেমন:

user@computer:~$ java -jar myApp.jar update notify

java -jarকমান্ড আপনার স্ট্রিংস পাস হবে updateএবং notifyআপনারpublic static void main() পদ্ধতি।

তারপরে আপনি এর মতো কিছু করতে পারেন:

System.out.println(args[0]); //Which will print 'update'
System.out.println(args[1]); //Which will print 'notify'

0

আগের সমস্ত মন্তব্য ছাড়াও।

public static void main(String[] args) 

হিসাবে লেখা যেতে পারে

 public static void main(String...arg)

অথবা

 public static void main(String...strings)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.