mainメソッド
読み:メインメソッド
外語:main method
Javaで作成されたアプリケーションを起動するさい、最初に呼び出されるメソッド。メインルーチンを記述する場所。
概要
mainメソッドには、次のような決まりごとがある。
- public宣言されていること。
- static宣言されていること。
- 返却値はvoidであること。
- 引数はString型の配列である。
一般的には、次のように記述される。
public static void main(String[] args) { }
ただ、publicとstaticは逆に書いても同義であり、また変数名argsは慣例に過ぎず実際には何でも良い。
特徴
引数
引数は文字列の配列として与えられる。
変数名をargsとすると、要素数はlengthメソッドで得られる。つまり「args.length」である。
また文字列は、1番目はargs[0]、2番目はargs[1]、のようにして得る。
必須ではない
javaコマンドはmainメソッドを実行しようとするが、Javaのクラスローディング仕様上はmainメソッドは必須ではない。
常識的なプログラムではmainメソッドを書くので、このようなことは考える必要自体通常はないが、mainメソッドがなくてもコンパイルすることができ、技巧さえ凝らせばmainメソッドが無くてもプログラムは動く。
あるクラスが起動されるさいには、クラスのmainメソッドが探される。メソッドを探すためには、まずクラスのローディングが行なわれるが、このときstaticイニシャライザーがあれば、それが(mainメソッドの有無を問わず)実行される。
そしてstaticイニシャライザー内で新しいスレッドを作成し、そのスレッドから任意のメソッドを呼べば、mainメソッドが無くてもクラスは実行されるということになる。
通常、mainメソッドが無ければ、JVMはNoSuchMethodException例外をスローする。結果、メインのスレッドはNoSuchMethodExceptionで終了してしまうが、終了する前に非デーモンスレッドを作成してしまえば、それが動作し続けるのである。
再検索