catch-img

Javaプログラムはmainメソッドから。仕組みから理解しよう

Javaのプログラムを実行するにあたって、mainメソッドは必ず用意しておかなければなりません。mainメソッドがなぜ必要なのでしょうか? Javaのmainメソッドについて、仕組みとルールをわかりやすく解説します。

目次[非表示]

  1. 1.Javaのmainメソッドを丁寧に解説
    1. 1.1.プログラムの起点となる
    2. 1.2.Javaのmainメソッドの書き方ルール
  2. 2.mainメソッドのルールを分解してみよう
    1. 2.1.先頭に記述するpublic識別子の意味
    2. 2.2.「静的」を意味するstatic
    3. 2.3.値を返さないvoidを使う理由
    4. 2.4.C言語からの流れを象徴 main
    5. 2.5.String[]args
  3. 3.Java実行に欠かせないmainメソッドを把握しよう


Javaのmainメソッドを丁寧に解説

Javaというプログラムを実行するに当たって、mainメソッドは重要な役割を担っています。

最初にJavaを学ぶ際には、mainメソッドから理解を深めていくのが一般的です。

まずはmainメソッドとは何か、その定義や役割について学んでいきましょう。

プログラムの起点となる

プログラムがどのように実行するかは、プログラミング言語によって主に次の2種類に分かれます。

  1. プログラムの先頭から順番に実行される
  2. 決められた関数・プロシージャ・メソッドから実行される

Javaの場合は、2に当てはまります。この仕様で決められた関数・プロシージャ・メソッドのことを『エントリーポイント』とも呼びます。Javaの場合は、mainメソッドがエントリーポイントにあたり、プログラムの起点になるのです。

Javaのmainメソッドの書き方ルール

Javaのmainメソッドは、Javaの言語仕様で厳密にルールが定義されています。必ず次のように書かなければ、プログラムが動きません。

public static void main(String[] args) { 
(ここに命令内容を記述)
}

mainメソッドには、以下の5つのルールが制定されています。

  • mainメソッドのアクセス修飾子は必ずpublicであること
  • staticメソッド(静的メソッド)であること
  • 戻り値は必ずvoidであること
  • メソッド名は『main』(全て小文字)であること
  • メソッドの引数はStringの配列か、Stringの可変長引数のみであること

mainメソッドの条件をしっかりチェックしましょう。

mainメソッドのルールを分解してみよう

先に挙げたmainメソッドの条件について、ここでは一つ一つの要素を掘り下げた上で解説していきます。

先頭に記述するpublic識別子の意味

修飾子とは、クラスやフィールド、メソッドの性質を決めるための予約語のことで、このうちアクセスコントロール(使用制限)を行う『public』『private』『protected』の3つを「アクセス修飾子」と呼びます。

publicは、全クラスからのアクセスを許可するための修飾子です。

mainメソッドでは、さまざまなクラスからのアクセスを想定しているため、public修飾子を付ける必要があると言われています。

「静的」を意味するstatic

staticは静的メソッドとも呼ばれ、以下の特徴を持っています。

  1. メソッドがクラスに属するようになる
  2. インスタンスにメソッドの分身がセットされる
  3. インスタンスを生成しなくても呼び出すことができる

クラスとは、プログラム実行のための処理をまとめたもの。そのクラスから生み出されたオブジェクトがインスタンスです。

クラスは設計書、インスタンスは実際に生成されたオブジェクトのことを指します。 mainメソッドは起点となるプログラムのため、インスタンスがない状態で起動されることも考えられます。

これに対応するためにめは、mainメソッドは静的メソッド(static)である必要があるというわけです。

値を返さないvoidを使う理由

基本的にJavaの処理は全てのスレッドの実行が終わった時なので、mainメソッドが戻り値を返すように組まれていると、mainメソッドが終わったにもかかわらず、プログラムが終了しないことが起こりえます。

そこで、mainメソッドではvoidを使います。voidは、戻り値を返さないメソッドのため、mainメソッドが終了すると共にプログラムを確実に終わらせられるようになります。

C言語からの流れを象徴 main

mainメソッドの名前が『main』なのは、C言語からの流れを汲んでいるからと言われています。JavaのコードはC言語が元になっているので、C言語からでも入りやすいようにしたのでしょう。

Java以外のプログラミング言語でも、mainメソッドにはmainもしくはそれに近い単語がしばしば使われます。

String[]args

mainメソッドの引数がStringの配列に限定されている理由は、これもC言語の仕様が元になっていると言われています。

Stringとは、Javaにおける文字列の基本的なクラスに設定されています。 String配列はとても扱いやすいので、デフォルトとしてStringに設定しておいて、もし文字列を変える場合はその都度プログラム側で変換するという仕様にしているのだと推測されます。

  Javaコードで避けては通れない変数や宣言の要点解説 | 株式会社ジョブサポート-新人研修・未経験者向けエンジニア研修(Java,JavaScript)のジョブサポート 変数はプログラミング言語を習得するなら必ずマスターしなければなりません。この記事では、Javaにおける変数と宣言についての要点をわかりやすく解説します。変数に入れるデータの扱いや種類についてもあわせて見ていきましょう。 株式会社ジョブサポート-新人研修・未経験者向けエンジニア研修(Java,JavaScript)のジョブサポート


Java実行に欠かせないmainメソッドを把握しよう

Javaを実行するにあたって、mainメソッドは必ず記述しなければなりません。mainメソッドにはいくつものルールがあり、そのルールが守られなければjavaが動くことはなく、エラーを吐き出していまいます。

mainメソッドに関して正確に理解し、Javaへの理解をさらに深めましょう。

プロエンジニア育成コース(Java,SQL,Spring) 短期通学講座、オンライン・リモート講座 (Java,HTML5・CSS・JavaScript)について お気軽にお問い合わせ下さい。