- ベストアンサー
Javaの文法
Javaプログラミングの勉強をはじめたばかりですが、本を見てもいまいちよくわかりません。多分、わからないのはpublic sta…の部分を理解できていないからだと思います。public static void main(String args[])の意味がよくわかりません。public staticはどういう意味なんでしょうか?それとString args[]の部分がなぜ必要なのかがよくわかりません。どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
argsという名前は文法上の決め事ではなく、「定番」な名前に過ぎません。 ですから、args以外でもコンパイルできて、実行できます。 static とか String args[] をなくした場合、文法上の問題は無いので、コンパイルは出来ます。でも実行できなかったんですよね。それは、Javaのプログラムを実行するときの入り口の形が変わってしまったからです。Javaのプログラムを実行するときに、入り口として、 クラスの外部から呼び出すことが出来る(public)。 クラスのオブジェクトに作用するものではない(static)。 復帰値がない(void)。 mainという名前である。 Stringの配列を引数とする ようなメソッドを探します。 改造後のmainメソッドは、staticでなくStringの配列を引数としていない為に、入り口としての体を成さなくなったのです。期待した形の入り口が見つからないために、プログラムは実行できなくなります。
その他の回答 (2)
- xinman
- ベストアンサー率30% (25/83)
>本にはargsという配列で統一しているのですか? 引数を英語では「argument」と書きます。 ここから「arg」という名前がついています。C言語でも多く見られる表現です。 また、最後の「s」は配列だから複数形の「s」です。 配列にならなければ「arg」、配列になれば「args」ですね。 >コンパイルは成功しますが実行できません。これはなぜでしょうか? Javaのプログラムは「void main(String[])」から実行が開始されます。 >void main(){ とした場合は、引数の型が「(String[])」と「()」で異なるために別のメソッドとて識別されます。 したがって「void main(String[])」型で定義されたメソッドがない場合は実行の開始が出来ません。
- happy_people
- ベストアンサー率30% (25/81)
public static void main(String args[]) という宣言は、次のことを表しています。 このメソッドは、クラスの外部から呼び出すことが出来る(public)。 このメソッドは、クラスのオブジェクトに作用するものではない(static)。 このメソッドは、復帰値がない(void)。 このメソッドは、mainという名前である。 このメソッドは、Stringの配列を引数とし、その配列にargsという名前を付ける。 publicの部分は、publicの他に、package public(同じパッケージ内からは呼び出せるが他のパッケージからは呼び出せない)、protected(このクラス自身かその派生クラスから呼び出せる)、private(このクラスだけから呼び出せる)というバリエーションがあります。 その他の詳細は、勉強が進んだときにまたどうぞ(ってことで良い?)
補足
argsは配列の名前ということは別の名称を使っても問題ないんですよね。 ためしに別名でコンパイルし実行することができました。でも、なぜJavaの 本にはargsという配列で統一しているのですか? それから、staticやString args[]を抜かして下のようなコードでコンパイル したところコンパイルは成功しますが実行できません。これはなぜでしょうか? class abc{ void main(){ int x = 50; System.out.println(x); } }