回答:
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]);
}
}
}
args
OSに関係なくスペースで区切られることが保証されていますか?
-version
例えば、それはだjava -version
とjava.exe -version
、ではなくjava.exe /version
(メインクラスをロードしようとする試み.version
)。誰かがこれに遭遇した場合、ちょうど私の2セント。
これらは、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チュートリアルを読むことを強くお勧めします。
args
呼び出し時にJavaプログラムに渡されるコマンドライン引数が含まれます。たとえば、次のようにプログラムを呼び出すと、
$ java MyProg -f file.txt
次にargs
、文字列"-f"
とを含む配列になり"file.txt"
ます。
javac MyProg.java
実行するには、まずコードをコンパイルする必要がありましたjava MyProg -f file.txt
。答えのどこにも言及されていないので、これには理由がありますか?
.class
最初にJavaソースコードをファイルにコンパイルする必要があります。
次の答えは私の理解といくつかのテストに基づいています。
String [] argsとは何ですか?
回答->
String [] ->ご存知のとおり、これは単純なString配列です。
args- >は配列の名前であり、任意の名前にすることができます(a、ar、argument、param、parameterなど)。コンパイラーの問題はなく、実行されました&私もテストしました。
例
1)public static void main(String [] argument)
2)public static void main(String [] parameter)
いつこれらの引数を使用しますか?
回答->
main関数は、開発者によって非常にインテリジェントに設計されています。実際の考え方は非常に深いです。これは基本的に、コマンドライン引数に基づいてCおよびC ++を考慮して開発されていますが、現在では誰も使用していません。
事1-ユーザーはコマンドラインから任意のタイプのデータを入力できます。数値または文字列を使用できます。コンパイラーがデータを受け入れるために必要なのは、どのデータタイプを使用する必要がありますか?事2を見る
Thing 2- Stringは、Javaの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
}
}
OPもについてのみ話しているString[] args
ので、の完全な例を挙げたいと思いpublic static void main(String[] args)
ます。
Public
:は、このメソッドにアクセスできるユーザーを定義するアクセス修飾子です。Publicは、このメソッドがどのクラスからもアクセスできることを意味します(他のクラスがこのクラスにアクセスできる場合)。
Static
:クラスに関連するものを識別するキーワードです。つまり、指定されたメソッドまたは変数はインスタンス関連ではなくクラス関連です。クラスのインスタンスを作成せずにアクセスできます。
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)
このコードpublic static void main(String[] args)
は、これが修正されていないことも示しています。(jdk-src \ j2se \ src \ share \ bin \ java.c)のコードを別の署名に変更すると機能しますが、これを変更すると他の問題が発生する可能性がありますJava 仕様のため
オフトピック: OPがこの質問をしてから7年になりますが、OPは今では自分の質問に答えられると思います。
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
}
別れる
public static void main(String args[])
部分的に。
「public」は、main()がどこからでも呼び出せることを意味します。
「静的」とは、main()が特定のオブジェクトに属していないことを意味します
「void」は、main()が値を返さないことを意味します
「メイン」は関数の名前です。main()は、プログラムの開始なので特別です。
「String []」は文字列の配列を意味します。
「args」は、String []の名前です(main()の本体内)。「args」は特別ではありません。他の名前を付けても、プログラムは同じように機能します。
String[] args
スペースで区切られた文字列のコレクションで、端末のプログラムに入力できます。多くの場合、初心者はこの変数を使用しませんが、念のため常に存在します。コードを完成させると、それを拡張子.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配列に格納されているこれらのパラメーターは、ユーザーが使用するファイルやプログラムが持つことができるメモリ容量などの特別なパラメーターを制御できるようにする場合に使用します。配列の使用方法を知りたい場合は、おそらくこのサイトでトピックを見つけるか、単にそれをググるだけです。任意の数のパラメーターを使用できることに注意してください。
簡単な素人の言葉で説明。
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]);
}
私はそれString args[]
を実行時にアプリケーションに渡すことができる文字列引数の配列である上記の回答でかなりうまくカバーされていると思います。完了のために、メソッドに渡されたmain
メソッドパラメータをString型の可変引数(varargs)として定義することも有効であると付け加えます。
public static void main (String... args)
つまり、main
メソッドは文字列配列(String args[]
)またはvarargs(String... args
)をメソッド引数として受け入れる必要があります。そして名前にargs
も魔法はありません。あなたは同様に書くarguments
かfreddiefujiwara
、以下に示すようにさえするかもしれません。
public static void main (String[] arguments)
public static void main (String[] freddiefujiwara)
の String[] args
あなたはOSのコマンドラインからアプリケーションを実行しているときのパラメータは、パラメータとして渡された文字列の配列です。
それでは、myApp.jar
Javaアプリケーションをコンパイルしてパッケージ化したとします。もちろん、OSでアプリをダブルクリックしてアプリを実行できますが、コマンドラインを使用して実行することもできます(例:Linux)。
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'
args
必ずしもargs
名前を付ける必要がないことです(好きな名前を付けることができます)。ただし、慣例に従うのが最善です。String... args
時々表示されることもありますが、これは同等です。