public static void main(String args[])
args
inは、コマンド ライン引数を格納する配列であることを知っています。しかし、コマンドライン引数は実行時に渡されるため、配列args[]
は動的配列ですか? Java では、ArrayList を使用してこの種のジョブを実行することがわかっています。では、実行時に単純な配列オブジェクトにこれらの引数をどのように格納するのでしょうか?
4 に答える
Java 配列は、コンパイル時だけでなく、実行時にサイズを定義できます (C スタックに割り当てられた配列とは異なります)。ただし、一度作成した配列のサイズは変更できません。
実行時に配列を作成することは完全に有効です。ただし、作成後にサイズを変更することはできません。
int argCount = 5;
// ...
String test[] = new String[argCount];
AnArrayList
を使用すると、実行時に基になるリストのサイズを拡大および縮小できます。
すべての配列のサイズは実行時に決定されます。動的ではない部分は、配列が作成された後にそのサイズを変更できないことです。これは、 に渡される配列にも当てはまりますmain
。
すべての関数に渡されるすべての配列は、配列が呼び出し先の見通しから動的であるという意味で動的です。メインの特殊なケースはこちら。オペレーティング システムのシェル (またはコマンド プロセッサ) が実行して Main 関数 (エントリ ポイントとも呼ばれる) を呼び出す、グロビングと呼ばれるメカニズムがあります。しかし、これはオペレーティング システム (および JVM) 自体の機能です。
args 配列は動的でなければならないのはなぜだと思いますか? Java 仮想マシンは、main メソッドを呼び出すだけで、コマンド ライン引数を文字列配列として渡します。この背後にある「魔法」はもうありません。