mainメソッドは、Javaアプリケーションが実行を開始する際の入り口(エントリーポイント)として、Javaの実行環境(JVM: Java Virtual Machine)によって最初に呼び出される特別なメソッドです。
📌 mainメソッドの定義
mainメソッドの定義は、常に以下の形式をとります。
Java
public static void main(String[] args) {
// プログラムが実行する処理はここから始まる
}
この定義の各キーワードには、それぞれ重要な意味があります。
| キーワード | 意味 | 理由 |
public | どこからでもアクセス可能 | JVMがプログラムの外部からこのメソッドを呼び出すため。 |
static | クラスに属する | JVMがオブジェクト(インスタンス)を生成することなく、直接クラス名でこのメソッドを呼び出すため。 |
void | 戻り値がない | mainメソッドは、処理結果をどこにも返却する必要がないため。 |
main | メソッド名 | JVMがエントリーポイントを特定するための固定の名前。 |
String[] args | 文字列の配列 | コマンドライン引数を受け取るための引数。 |
Google スプレッドシートにエクスポート
⚙️ 2. プログラムの起動プロセス
Javaプログラムが起動してから処理が開始されるまでの流れは以下の通りです。
ステップ 1: ソースコードのコンパイル
まず、人間が書いたJavaのソースファイル(.java)は、コンパイラによってJVMが理解できる形式(バイトコード)に変換され、クラスファイル(.class)が生成されます。
Bash
# コマンド例:
javac HelloWorld.java
# -> HelloWorld.class が生成される
ステップ 2: JVMの起動とクラスのロード
ユーザーがJavaプログラムを実行する際、JVMが起動し、指定されたクラスをメモリ上に読み込みます(ロード)。
Bash
# コマンド例:
java HelloWorld
このコマンドを実行すると、JVMはHelloWorld.classをロードします。
ステップ 3: mainメソッドの検索と実行
ロードされたクラスの中から、JVMは**public static void main(String[] args)**というシグネチャ(定義)を持つメソッドを探し出し、実行を開始します。
ステップ 4: 処理の実行
mainメソッド内から、他のメソッドが呼び出されたり、オブジェクトが生成されたりすることで、プログラム全体が動き出します。
ステップ 5: プログラムの終了
mainメソッド内の処理がすべて完了するか、またはSystem.exit()などが呼び出されると、プログラムは終了し、JVMも停止します。
💬 3. コマンドライン引数 (String[] args)
mainメソッドの引数であるString[] argsは、プログラムを起動する際に外部から渡された文字列データを受け取るためのものです。
Java
public static void main(String[] args) {
// args[0] は1つ目の引数、args[1] は2つ目の引数に対応する
if (args.length > 0) {
System.out.println("引数を受け取りました: " + args[0]);
} else {
System.out.println("引数はありません。");
}
}
実行例
コマンドラインからプログラムを実行する際、クラス名の後に続く文字列がargs配列に格納されます。
Bash
# コマンド例:
java MyProgram arg1 123
# -> mainメソッド内の args[0] は "arg1" に、args[1] は "123" になる
このように、mainメソッドは、単なるプログラムの開始点であるだけでなく、JVMと連携し、外部からの情報を受け取る窓口としての役割も担っています。

