0

はどのように実装されていますかpublic static void main(String args[])? String args[]として実装されていvarargsますか?

渡された引数の数のみを与えるため、これを求めています。args.lengthつまり、のようにどこにも定義されていませんString args[] = new String[30]。この配列はどのように実装されていますか?

4

3 に答える 3

12

文字列の配列として、見た目どおりに実装されています。一方、Varargs は配列として実装されString...ますString[]

于 2013-03-08T15:32:37.640 に答える
4

それは宣言されています(実装されていません)が、宣言されていると言います可変引数を使用して関数を宣言することは完全に合法です。

public static void main(String... argv)

コンパイラは varargs 宣言を受け取り、それをString[]バイトコードに変換します。これは、varargs を使用するすべての関数で発生します。

JVM がプログラムの実行を開始すると、コマンドライン引数の数とまったく同じ長さの配列が作成されます ( -DJVM 自体を対象としたそのような引数は除きます)。次に、指定されたクラスでメイン関数を検索して呼び出します。

于 2013-03-08T16:31:24.747 に答える
2

これは、開始時にプロセスに渡された引数の値で初期化される単なる文字列の配列です。可変引数リストではありません。

于 2013-03-08T15:31:57.397 に答える