これは私がインタビューで直面した質問です。
Javaのmainメソッドがpublic static void main(String [] args)として呼び出されるのはなぜですか?
回答:
1. main()は、プログラムの実行が開始するたびにJVMによって呼び出されるため、パブリックとして宣言する必要があります。JVMはプログラムパッケージに属していません。
パッケージの外部でmainにアクセスするには、それをpublicとして宣言する必要があります。public以外として宣言すると、ランタイムエラーが表示されますが、コンパイル時エラーは表示されません。
2. main()は静的として宣言する必要があります。メソッドが静的として宣言されている場合、ClassName.methodName()を使用してクラスの外部でそのメソッドを呼び出すことができるためです。
class Sample
{
static void fun()
{
System.out.println("Hello");
}
}
class Test
{
public static void main(String[] args)
{
Sample.fun();
}
}
JVMは最初にTestクラスをロードし、コマンドライン引数を確認して、メインメソッドをTest.main();として呼び出します。
3. JVMはmain()からの値を予期していないため、main()はvoid main()として宣言する必要があります。したがって、それはvoidとして宣言する必要があります。
他の戻り値の型が指定されている場合、それはRunTimeError、つまりNoSuchMethodFoundErrorです。
4. JVMはコマンドライン引数を渡すことによってmainメソッドを呼び出すため、main()は配列として文字列引数を持っている必要があります。これらは文字列配列オブジェクトに格納されるため、引数としてmain()に渡されます。