以下は、Java のメイン メソッドに関するより古典的な面接の質問であると著者が考えているもので、実際には Java に関する最も基本的な知識の質問の一部です。間違いがありますので、ご指摘ください。
1. main メソッドを使用せずにクラスを定義するにはどうすればよいですか?
いいえ、mainメソッドがないとJavaクラスを実行できません。
Java 7 より前では、静的初期化を使用して Java クラスを実行できました。ただし、Java 7 以降では、これは機能しません。
2.main()メソッドに必要なパラメータは文字列配列ではありませんか?
いいえ、main()メソッドのパラメータは文字列配列でなければなりません。
ただし、変数パラメータを導入する場合、文字列型の変数パラメータをパラメータとしてmain()メソッドに渡すことができます。変数パラメータは配列である必要があります。
package com.instanceofjava; public class MainMethod { public static void main(String args[]) { } }
3. main()メソッドの戻り値の型は変更できますか?
いいえ、main() メソッドの戻り値の型は空のみです。他のタイプは受け入れられません。
package com.instanceofjava; public class A { public static int main(String[] args) { return 1; //run time error : No main method found } }
4. main() メソッドはなぜ静的でなければならないのですか?
main()メソッドは静的でなければなりません。
main() が非静的であることが許可されている場合、JVM は main メソッドが呼び出されたときにそのクラスをインスタンス化する必要があります。
インスタンス化するときは、クラスのコンストラクターを呼び出す必要があります。このクラスのコンストラクターにパラメーターがある場合、あいまいさが生じます。
例えば、次のプログラムでは、クラス「A」をインスタンス化するときに、JVMはどのようなパラメータを渡しますか?
package com.instanceofjava; public class A { public MainMethod(int i) { //Constructor taking one argument } public void main(String[] args) { //main method as non-static }
5. main() メソッドを非静的として宣言できますか?
いいえ、JVM がクラスをインスタンス化せずに main() メソッドを呼び出せるように、main() メソッドを静的に宣言する必要があります。
main() メソッドから「static」ステートメントを削除すると、コンパイルは成功する可能性がありますが、実行時にプログラムが失敗します。
package com.instanceofjava; public class A { public void main(String[] args) { System.out.println("indhu"); //Run time error } }
6. main() メソッドをオーバーロードできますか?
はい、main()メソッドをオーバーロードできます。 Java クラスには、任意の数の main() メソッドを含めることができます。
Javaクラスを実行するには、クラスのmain()メソッドに「public static void main(String[] args)」のような宣言が必要です。この宣言に変更を加えると、コンパイルは成功します。ただし、Java プログラムは実行できません。 main メソッドが見つからないため、実行時エラーが発生します。
package com.instanceofjava; public class A { public static void main(String[] args) { System.out.println("Indhu"); } void main(int args) { System.out.println("Sindhu"); } long main(int i, long d) { System.out.println("Saidesh"); return d; } }
7. main() メソッドを private または protected として、またはアクセス修飾子なしで宣言できますか?
いいえ、main() メソッドは public でなければなりません。 main() メソッドをプライベートおよび保護として定義したり、アクセス修飾子を使用したりすることはできません。
これは、JVMがmain()メソッドにアクセスできるようにするためです。 main() メソッドを public として定義しない場合、コンパイルは成功しますが、main メソッドが見つからないため、実行時エラーが発生します。
package com.instanceofjava; public class A { private static void main(String[] args) { //Run time error } }
8. Java で main メソッドをオーバーライドできますか?
いいえ、Javaではmainメソッドをオーバーライドすることはできません。これは、main メソッドが静的メソッドであり、Java では静的メソッドがコンパイル時に結合されるため、Java では静的メソッドをオーバーライドできないためです。
9. Javaでmainメソッドを終了させることはできますか?
Javaではmainメソッドを終了させることができます。 JVM ではこれに関して問題はありません。
10. Javaでmainメソッドを同期できますか?
はい、Java で main メソッドを同期できます。main メソッドの宣言で synchronized 修飾子を使用できるので、Java で main メソッドを同期できます。
英語原文:Java Interview question On main() Method