5

メソッドにパラメーターを指定args[]することも、指定しmain()ないことを選択することもできます。しかし、十分な引数を渡さずに他のパラメーター化されたメソッドを呼び出すと、エラーが発生します。

なぜこの方法では当てはまらないのmain(String[] args)ですか?

4

6 に答える 6

10
 public static void main(String[] args)

mainの配列であるパラメータを常に受け​​取りますString。コマンドライン引数を渡さない場合argsは空ですが、まだそこにあります。

于 2011-09-06T05:39:09.007 に答える
4

コマンド ライン パラメータが存在しない場合でも、常に String の配列が渡されます。その状況では、配列の長さは 0 です。これは、自分でテストできます。

public static void main(String[] args) {
   if (args.length == 0) {
      System.out.println("no parameters were passed");
   }
}
于 2011-09-06T05:38:32.590 に答える
2

ご覧のとおり、main は 1 つの関数引数 (文字列の配列) を除きます。JVM は、コマンド ライン引数を文字列の配列として main 関数に渡します。引数が指定されていない場合は、空の配列が渡されますが、まだ存在しています。

独自の関数を次のように定義することもできます。

void myMain(String args[]) {
   for(int i = 0; i < args.length; i++) {
       System.out.println(args[i]);
   }
}

その後、この関数を呼び出して、3 つのコマンドライン引数を渡すことをエミュレートできます。

 String a[] = {"foo", "bar", "bah"};
 myMain(a);

または、コマンドライン引数が指定されていない状況をエミュレートできます。

String a[] = {};
myMain(a);

args実際のメインから関数に渡すこともでき、パラメーターが指定されているかどうかに関係なく機能します。

public static void main(String[] args) {
    myMain(args);
}

null ポインターのチェックインがないことに注意してください。myMainこれを渡すと、nullNPE がスローされます。

于 2011-09-06T06:09:17.217 に答える
1

なぜならは特別で、何も与えられていないという空の in leu をMain自動的にとるからです。これは、引数なしのString array呼び出しを正確に説明しているためです。main()システムはこれを便宜上提供します。

于 2011-09-06T05:36:00.687 に答える
1

Java は main メソッド自体を引数付きで呼び出すため、引数なしで "呼び出し" してもエラーは発生しません。

于 2011-09-06T05:36:38.860 に答える