web-dev-qa-db-ja.com

"String args []"とは何ですか?メインメソッドJavaのパラメータ

私はJavaでプログラムを書き始めたばかりです。次のJavaコードはどういう意味ですか?

public static void main(String[] args)
  • String[] argsとは何ですか?

  • いつargsを使用しますか?

抽象的説明よりもソースコードや例が好ましい

281
freddiefujiwara

Javaでは、argsには コマンドライン引数Stringオブジェクトの配列として含まれています。

言い換えれば、あなたがあなたのプログラムを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]);
        }
    }
}
270
Daniel Lew

これらはJavaのコマンドライン引数用です。

言い換えれば、あなたが実行した場合

Java MyProgram one two

argsは次のようになります。

["1"、 "2"]

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

これは、特定の方法で実行するようにアプリケーションを構成するか、必要な情報を提供するためです。


もしあなたがJavaに不慣れならば、オラクルの公式の Javaを読むことを強くお勧めします。 _ tm _ チュートリアル

98
mR_fr0g

argsには、呼び出し時にJavaプログラムに渡されるコマンドライン引数が含まれています。たとえば、次のようにプログラムを起動したとします。

$ Java MyProg -f file.txt

argsは文字列"-f""file.txt"を含む配列になります。

37
mipadi

次の答えは私の理解といくつかのテストに基づいています。

String []引数とは何ですか?

Ans->

String [] - >これは単純なString配列です。

args - >は配列の名前です(例えば、ar、引数、引数、パラメータ)。コンパイラに問題はありません。私もテストしました。


1)public static void main(String []引数)

2)public static void main(String []パラメータ)

いつこれらの引数を使うのですか?

Ans->

主な機能は開発者によって非常に知的に設計されています。実際の思考は非常に深いです。これは基本的に、コマンドライン引数に基づいてCおよびC++を考慮して開発されていますが、今日ではそれ以上使用することはできません。

Thing 1 - Userは、コマンドラインから任意の種類のデータを入力することができます。数値または文字列にすることができます。物事2を参照してください

Thing 2 / Stringは、Javaのint、long、float、double、byte、shot、charなどのすべてのプリミティブデータ型をサポートするデータ型です。あなたは簡単にどんなプリミティブデータ型でそれを解析することができます。

E.g 次のプログラムをコンパイルして実行し、私もテストした。

入力が - > 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    

  }
}
14
Ajinkya

String [] argsは、Javaで文字列の配列を宣言する方法でもあります。

このメソッドシグネチャでは、メソッドが呼び出されると、配列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
Cuga

解散する

public static void main(String args[])

部品で。

"public" はmain()がどこからでも呼び出せることを意味します。

"static" はmain()が特定のオブジェクトに属していないことを意味します

"void" はmain()が値を返さないことを意味します

"main" は関数の名前です。 main()はプログラムの始まりなので特別です。

"String []" はStringの配列を意味します。

"args" (String()の名前です(main()の本文内))。 "args"は特別なものではありません。他の名前を付けることもでき、プログラムは同じように動作します。

  • String[] argsは、スペースで区切られたストリングのコレクションです。これは、端末上のプログラムに入力することができます。多くの場合、初心者はこの変数を使用しませんが、念のために常に存在します。
11
Jaimin Patel

OPがString[] argsについて話しているだけでも、私はpublic static void main(String[] args)の完全な例を挙げたいと思います。

Public:は アクセス修飾子 で、誰がこのメソッドにアクセスできるかを定義します。 Publicは、このメソッドがどのクラスからもアクセスできることを意味します(他のクラスがこのクラスにアクセスできる場合)。

Static:はクラス関連のものを識別するキーワードです。これは与えられたMethodまたは変数がインスタンスに関連しているのではなくクラスに関連していることを意味します。 Classのインスタンスを作成しなくてもアクセスできます。

Void:はメソッドの戻り値の型を定義するために使用されます。メソッドが返すことができるものを定義します。 Voidは、メソッドが値を返さないことを意味します。

main:はメソッドの名前です。このメソッド名は、特定のシグネチャのみを持つアプリケーションの開始点としてJVMによって検索されます。

String[] args:は、メインメソッドへのパラメータです。

JDKのソースコード(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;
...

Javaの 開始メソッドmainという名前で、特定のシグニチャーpublic static void main(String[] args)を持たなければならないことがわかります。

(jdk-src\j2se\src\share\bin\Java.c)のコードを別のシグネチャに変更すると、public static void main(String[] args)は固定されていないことがわかりますが、これを変更すると他の可能性があります。 Javaのための問題 specs

オフトピック: OPがこの質問をしてから7年が経ちましたが、OPは今までに自分の質問に答えられると私は思います。

9
Igoranze

コードが完成したら、拡張子.Javaのファイルに変換します。これは、ダブルクリックするだけでなく、コンソール(Macではターミナル、Windowsではcmd.exe)全体で実行できます。多くのこと1つはコンソールメッセージ(System.out.printまたはSystem.out.println)が見えることです。ダブルクリックしても見えません。彼らがすることができるもう一つのことはパラメータを指定することなので、通常は次の行を使うでしょう

Java -jar MyCode.jar

でプログラムのフォルダに移動した後

cd C:My/Code/Location

windowsの場合

cd My/Code/Location

macでは(Macはそれほど派手ではないことに注意してください)コードを実行しますが、使用するパラメータを指定するには

Java -jar MyCode.jar parameter1 parameter2

プログラムで使用できるargs配列に格納されているこれらのパラメータは、使用するファイルやプログラムで使用できるメモリ量などの特殊なパラメータをユーザに制御させたい場合です。配列の使用方法を知りたい場合は、おそらくこのサイトでトピックを見つけるか、または単にそれをグーグルすることができます。パラメータはいくつでも使用できることに注意してください。

8
Zac

Javaクラスがコンソールから実行されるときの主なメソッドは、呼び出されるものです。これが起こるためには、このメインメソッドの定義は

public static void main(String [])

この文字列配列がargsと呼ばれることは標準的な慣例ですが、厳密には必須ではありません。プログラムを起動するときに、コマンドラインでこの配列を入力します。

Java MyClass a b c

これらはプログラムのオプションを定義するためによく使われます。

6
shsteimer

String args[]は、実行時にアプリケーションに渡すことができる単なる文字列引数の配列であることは、上記の回答でかなりよくカバーされていると思います。補完のために、mainメソッドに渡されるメソッドパラメータをString型の可変引数(varargs)として定義することも有効であることを付け加えるかもしれません。

public static void main (String... args)

つまり、mainメソッドは、メソッドの引数としてString配列(String args[])または可変引数(String... args)のいずれかを受け入れなければなりません。そしてargsという名前の魔法もありません。以下のe.gsに示すように、argumentsあるいはfreddiefujiwaraを書くこともできます。

public static void main (String[] arguments)

public static void main (String[] freddiefujiwara)

6
sedeh

簡単な素人の言葉で説明。

Mainメソッドは、JVMにクラス名を指定するときに引数を指定することを期待しています。つまり、ファイル名をTry.Javaとします。これをコマンドプロンプトで実行するには、 "javac Try.Java"を書いてコンパイルし、続いて "Java Try"を実行します。単純に「Java Try」と書くのではなく、「Java Try 1」と書くとしましょう。ここでは引数 "1"を渡しました。あなたのコードで使わなくても、これはあなたのメインメソッドによってとられるでしょう。

あなたのメインメソッドが実際に引数 "1"を取ったかどうかをチェックしたい場合。簡単に言うと、あなたのメインメソッドの中に次のように入力します。

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

in public static void main(String args []) argsデータ型がStringのコンソール行引数の配列です。この配列では、次のようにコマンドラインで呼び出すことでさまざまな文字列引数を格納できます。 Java myProgram Shaan Royal その後、ShaanとRoyalはarg [0] = "Shaan"として配列に格納されます。 ; arg [1] = "Royal";コマンドラインで呼び出さない場合は、プログラムの内部でもこれを手動で行うことができます。

6
Shaan Royal

スタイルdataType[] arrayRefVarが優先されます。 dataType arrayRefVar[]というスタイルはC/C++言語に由来し、C/C++プログラマを収容するためにJavaで採用されました。

3
Gerald

上記のコメントすべてに加えて。

public static void main(String[] args) 

と書くことができます

 public static void main(String...arg)

または

 public static void main(String...strings)
0
Rahul Anand