• 締切済み

なぜmainメソッドにだけ固定の引数があるのか?

Javaの初心者です。 勉強していてふと思ったのですが、なぜmainメソッドだけに main(String[] X) のようにのストリング型の配列を引数に必ず設定しないといけないのでしょうか? 他のメソッドであれば、引数の有る無しをプログラマが決めることができますよね? そのため疑問に思ったのですが、どなたか教えていただけないでしょうか?

みんなの回答

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.4

他の方も仰ってますが、VMが最初に呼び出すメソッドがそう決まっているからです。 例えば簡単なechoを実装して以下のように実行したとします。 >java echo "Hello World" するとechoクラスのpublic static void main (String[])が呼び出されます。 ないとエラーになりますよね。 エントリーポイントと呼ばれる特殊なメソッドなので、一定の決まりがあるわけです。

参考URL:
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

>mainメソッド以外はJava実行環境が呼び出すわけではないのですか? mainメソッド以外は、他のメソッドから呼び出されます。メソッドについて基本から学び直した方が良いかと思います。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

その形式でないと、Java実行環境がプログラムを起動するために一番最初に呼び出すものがどれか分からなくなるから。 http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.1.4

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

引数のあるなしと型は、呼び出される側のメソッドを書く人が勝手に決められるわけではありません。 呼び出し側とそろえる必要があるのはご存じですよね。 mainメソッドを呼び出すのはJava実行環境です。Java実行環境側は仕様が固まっているので、呼び出され側はそれに合わせる必要があるわけです。 よく知りませんが組み込み機器用のJavaだとmainの引数の型が違うかもしれません。

nakayama7
質問者

補足

mainメソッド以外はJava実行環境が呼び出すわけではないのですか?

関連するQ&A

専門家に質問してみよう