public static void mainってどういう意味なのか教えて~初心者向けJava解説~

プログラミング学習の最初の壁

プログラミングを勉強し始めて一番最初に立ちはだかる壁の一つに、文の構成方法が挙げられます。

プログラミング初心者の皆さんは、「Hello World!」と表示させようと思ったときに最初に何を書けばいいのかわからないという経験をして、その状況を打開するためにこの記事にたどり着いたのではないでしょうか?

今回はそんなあなたの為にこの壁を私が克服した方法をお教えし、みなさんの勉強の助けになれたらうれしいです。

使用するプログラミング言語はJavaとなります。しかし、ここでご紹介するこの壁の克服方法は言語に限らず共通して言えることだと思いますので、ぜひ目を通してみてください。

それではさっそくプログラムの構成がどうなっているのか、一つずつ確認していきましょう。

まだプログラムを実行できる環境が整っていない方は以下の記事を参考にeclipseをインストールし、実行環境を整えてから、この記事に戻ってきていただけると一緒に進むことができるはずです。

プログラミングを始めよう!~Javaを書くための環境を作ろう~

 


「public static void main(String[] args)」 とは?

public static void main(String[] args)はJavaのプログラムファイルにおいてクラスの宣言の直後に記述される、Mainクラスで一番最初に実行される内容を定義するために使われる宣言です。

何故public static void main(String[] args)と記述するんでしょうか?

一つずつ分解してその意味を解説していきましょう。

 

皆さん英語を学習するときは

主語()動詞(play)目的語(tennis

という順番で文を作るんだと教わりましたよね。

 

 

それに近い形でプログラムを表現するとしたら、

public: 「主語」にあたります。誰でもアクセスできる、という役割を担います。

  • 英文の例: 主語の IYou のように、誰がその動作をするのかを示します。publicはプログラムの世界では、どこからでもこのメソッドを呼び出せることを意味します。

 

static: 「動詞」にあたります。このメソッドがクラスのインスタンス(実体)を作らなくても実行できることを意味します。

  • 英文の例: playrun のように、主語が行う「動作」を示します。static は、特定のオブジェクトに依存せず、そのクラス自体が持つ機能であることを表します。

 

void: 「目的語」にあたります。このメソッドは、実行後に何も値を返さないことを示します。プログラム中では「型」が記述されているものになります。

  • 英文の例: tennisa game のように、動詞の行為の「対象」や「結果」を示します。void は、メソッドが何かを返すのではなく、実行するだけで完結する、という「結果」を表します。

 

main(String[] args): 「補足情報」にあたります。メソッド名が main であり、引数として String 型の配列 args を受け取ることを示します。

  • 英文の例: with my friendsin the park のように、動作にまつわる詳細な情報を付け加えます。main はプログラムの実行開始を意味する「特別な名前」であり、String[] args は、コマンドラインから受け取った引数を格納するための「受け皿」です。

 

これではまだまだわかりにくいですね。

ほかにどんな文章があるのか例を交えながら見ていきましょう。

 


publicの部分を理解する

最初に記述するpublicの部分には以下の4パターンの単語が目的によって使い分けられます。

※但し、mainメソッドではpublicだけが使用されるので注意

  • public: どこからでもアクセス可能です。
  • protected: 同じパッケージ内、または異なるパッケージでもサブクラスからアクセス可能です。
  • なし(デフォルト/パッケージプライベート): 同じパッケージ内からのみアクセス可能です。
  • private: 定義されたクラス内からのみアクセス可能です。

最初のうちはすべてpublicと記述すればまず間違いはありませんので、何かメソッドを定義するときは「public」を記述しましょう。

問題はここから先になります。メソッドごとにこの先の記述方法に違いが出てきますので、考え方をよく理解して使えるようになっていきましょう。

 

 

 

 


staticの部分を理解する

 

static は、Javaのメソッドやフィールドに適用されるキーワードで、「静的」であることを示します。

  • プログラムにおける役割: これは、特定の「モノ(インスタンス)」に紐づく機能ではなく、その「種類(クラス)」自体が持つ機能である、ということを示します。
  • 英文の文法上の例え: public static void main(String[] args)static は、動詞の play にあたります。
    • static の場合: 特定の主語(I)が play するように、特定のインスタンスがメソッドを実行します。
    • static の場合: 主語に依存せず、クラスという「概念」が直接 play するようなイメージです。

 

staticstatic の違い

 

この違いをさらに具体的に理解するために、車の例で考えてみましょう。

  • static なメソッド:
    • : Sound()(鳴くメソッド)
    • 解説: この動作は、特定の犬(インスタンス)に対して行われるものです。例えば、あなたが持っている赤い車を加速させます。

       
  • static なメソッド:
    • : RunAllDogs()(全ての犬インスタンスが走り出す)
    • 解説: この動作は、特定のインスタンスではなく、「犬」というクラス全体に対して行われる機能です。

       

voidの部分を理解する

この部分は戻り値の型を記述しています。「void」のほかにも、次のような型が記述されます。(例として一部紹介)

当然ながらこの部分を記述し、戻り値の型を指定した場合は「return」文で戻り値を指定しなければエラーとなるのでご注意ください。

 

  • int   : 数値型で返す
  • boolean     : 真偽値型で返す
  • void    : 何も返さない
  • String   : 文字列型で返す
  • double         : 64ビットの浮動小数点数型で返す
  • Dog         : Dogクラス型で返す                                                  etc...

 

 


main(String[] args)の部分を理解する。

main(String[] args) は、Java プログラムの実行を開始する地点を意味します。この部分を英文の文法になぞらえると、動詞や目的語を伴って文を完成させるための**「詳細情報」**にあたります。

 

main(String[] args) の役割

main は、メソッド名が**特別にmainであることから、Javaのプログラムが実行されるときに最初に呼び出されることが約束されています。これは、プログラムがどこから始まるかを示す「玄関」のようなものです。

String[] args は、main メソッドが受け取る「引数」を意味します。

  • String[]: 文字列の配列であることを示します。
  • args: 引数を意味する arguments の略称で、慣習的に使われる変数名です。

 

引数を受け取っているのはどこから!?と感じた方は気持ちはわかりますが、ここではそれを理解する必要はありません。

 

 

引数についてわからないという方は

佐々木真氏の「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典|引数

で引数についてまず理解しましょう。直感的になんとなくイメージできればそれで構いません。

 


まとめ

ここまでJavaの書きだしについて詳しく解説してきましたが、理解できてきたでしょうか?

この書きだしの文法は、多くのJavaプログラムの基盤となります。これから様々なコードを書いていく上で、この部分がなぜ必要なのかを理解していれば、よりスムーズに学習を進めることができるでしょう。

もし、今回の内容をしっかり理解できたら、次は実際にこのメソッドを使って簡単なプログラムを書いてみることから始めてみましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です