1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaのエントリーポイントをざっくりまとめてみた[java初心者]

Last updated at Posted at 2025-03-30

はじめに

こんにちは。
プログラミング初心者Wakinozaと申します。
Java勉強中調べたことを記事にまとめています。

十分気をつけて執筆するつもりが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。
間違い等あれば、指摘いただけると助かります。

対象読者

Javaを勉強中の方。
Java SE Bronze試験を勉強中の方。
mainメソッドの仕様など、Javaの基礎知識を知りたい方。

目次

1. プログラム起動の開始位置
2. mainメソッドの仕様
3. コマンドライン引数
4. JavaSEBronze試験対策の補足情報

本文

1. プログラム起動の開始位置

多くのプログラムは複数の関数やメソッドを持っているため、起動するためには、プログラムの開始位置を示す必要があります。
このプログラムの開始位置は、プログラムによって規定されるのではなく、言語仕様によって規定されています。

開始位置のルールは、言語によっても異なり、大きく2種類に分けられます。

  • コードの先頭から始まる言語
  • 特定の仕様の関数やメソッドから始まる言語

Python・Ruby・PHPが前者で、Javaをはじめ、C・Goなどが後者にあたります。

開始位置となる「特定の仕様の関数やメソッド」のことを「エントリーポイント」とも言われます。

Javaのエントリーポイントは、「main」メソッドです。
mainメソッドは、文字通りプログラムの起点となる重要な部分です。
そのため、厳密に使用が定められています。

2. mainメソッドの仕様

mainメソッドに適用されるルールは主に5つあり、その全てを満たしていないとmainメソッドと見なされません。
ルールは以下の5つです。

  • アクセス制限がpublicであること
  • インスタンスがいらないstaticであること
  • 戻り値はvoidであること
  • メソッド名は「main」(全て小文字)であること
  • 引数はString配列型を受け取ること

この5つのルールを満たした記述が、以下の通りです。

main.java
public static void main(String[] args){
  //何らかのコード
}

このうち「public static void main」の部分は仕様で決まっているため、ほぼ定型文です。

その後の()内はmainメソッドの引数で、「String[]」が引数の型を、「args」が引数の変数名を表します。
ちなみに「args」は、「引数」を意味する英単語argumentsの省略形です。
引数の変数名は、仕様で定められていないため、「args」以外の変数名でも問題ありません。

3. コマンドライン引数

仕様を確認すると、mainメソッドは引数を受け取れるようになっていると言えます。
しかし引数は、通常「呼び出し元のメソッド」が指定するものです。
プログラムで一番最初に起動し、「呼び出し元のメソッド」が存在しないはずのmainメソッドが、なぜ引数を受け取る仕様になっているのでしょう?
それを説明するのが、「コマンドライン引数」です。
(コマンドラインとは、Windowsではコマンドプロンプト、Macではターミナルと呼ばれるあの黒い画面のことです。)

コマンドラインでJavaプログラムを起動するとき、「追加情報」を指定することができます。
この追加情報を「コマンドライン引数」と言います。
プログラム起動時に追加情報があった場合、JVMが追加情報をString配列型に変換し、mainメソッドに引数として渡します。

mainメソッドは、コマンドライン引数を受け取るために、String配列型を引数として受け取る仕様になっているのです。

4. JavaSEBronze試験対策の補足情報

  • javaでは、同じシグニチャ(名前と引数のセット)のメソッドを複数記述することができないため、mainメソッドもプログラム内に複数記述することはできません
  • mainメソッドの引数は、String配列型以外に、可変長引数のString型にすることも可能です。可変長引数をコンパイルすると最終的に配列型に変換されるため、可変長引数のString型でもmainメソッドのルールを満たせるのです

記事は以上です。
最後までお読みいただき、ありがとうございました。

参考文献

この記事は以下の情報を参考にして執筆しました。

  • [徹底攻略 Java SE Bronze 問題集]
  • [Javaのmainメソッドとは?処理実行のエントリーポイントとなるmainメソッドについて解説](最終更新日 2024-09-01)(https://www.bold.ne.jp/engineer-club/java-main)(参照 2025-03-30)
  • [スッキリわかるJava入門 第4版]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?