static の無い main
次のクラスを java Main で実行するとどうなるか。
public class Main {
public void main(String[] args) {
System.out.println("hi");
}
}- A コンパイルはできるが、実行時に main メソッドが見つからないというエラーになる
- B
hiと出力される - C コンパイルエラーになる
- D 何も出力されずに正常終了する
正解と解説を見る
正解: A
- A: static の無い main は普通のインスタンスメソッドとしてコンパイルできますが、java コマンドは static な main を探すので実行時エラーになります。
- B: static が無いので開始点として呼ばれず、hi は出力されません。
- C: インスタンスメソッドとして文法上は正しいので、コンパイルはできます。
- D: 開始点が見つからないというエラーが表示されて、異常終了します。
ポイント
- static の無い main は普通のインスタンスメソッドとしてコンパイルできます。
- しかし java コマンドは
public static void main(String[])を探すので、実行時にエラーになります (Java 17)。
「main メソッドを持つ実行可能な Java プログラムの作成」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)