以下は、Javaのメインメソッドを日本語で自然な表現に言い換えたものです:「public static void main(String[] args)」
以下は日本語での自然な言い方です。
イントロダクション
通常、Javaのメインメソッドは、Javaプログラミングを始める際に最初に学ぶ方法です。なぜなら、Javaプログラムを実行するためのエントリーポイントだからです。メインメソッドには、実行するコードや他のメソッドを呼び出すコードを含めることができ、プログラムの一部である任意のクラスに配置することができます。より複雑なプログラムでは、通常、メインメソッドのみを含むクラスがあります。メインメソッドを含むクラスには任意の名前を付けることができますが、一般的にはクラス名をMainと呼ぶことが多いです。
以下の例では、mainメソッドを含むクラスはTestと呼ばれています。
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
この記事では、メインメソッドの各コンポーネントの意味について学びます。
ジャバのメインメソッド構文
メインメソッドの構文は常に次のようになります。
public static void main(String[] args){
// some code
}
文字列配列の引数の名前だけを変更することができます。例えば、argsをmyStringArgsに変更することができます。文字列配列の引数は、String… argsまたはString args[]として書くことができます。
公開されます。
メインメソッドのアクセス修飾子はpublicにする必要があります。これにより、JREはこのメソッドにアクセスして実行することができます。もしメソッドがpublicでない場合、アクセスは制限されます。以下のコード例では、メインメソッドにpublicなアクセス修飾子がない状態です。
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
プログラムをコンパイルして実行する際に、mainメソッドがpublicではなく、JREがそれを見つけることができないため、以下のエラーが発生します。
- javac Test.java
- java Test
Error: Main method not found in class Test, please define the `main` method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
静的
Javaプログラムが開始されると、そのクラスのオブジェクトは存在しません。メインメソッドは静的でなければならないため、JVMはクラスをメモリに読み込み、クラスのインスタンスを最初に作成せずにメインメソッドを呼び出すことができます。以下の例のコードでは、メインメソッドには静的修飾子が欠けています。
public class Test {
public void main(String[] args){
System.out.println("Hello, World!");
}
}
プログラムをコンパイルして実行すると、主要なメソッドが静的ではないため、以下のエラーが発生します。
- javac Test.java
- java Test
Error: Main method is not static in class Test, please define the `main` method as: public static void main(String[] args)
void(無効)
すべてのJavaメソッドには戻り値の型を指定する必要があります。Javaのメインメソッドの戻り値の型はvoidです。なぜなら、何も返さないからです。メインメソッドの実行が終了すると、Javaプログラムは終了するため、返されたオブジェクトは必要ありません。次の例のコードでは、メインメソッドが戻り値の型がvoidであるにもかかわらず、何かを返そうとしています。
public class Test {
public static void main(String[] args){
return 0;
}
}
プログラムをコンパイルする際に、Javaは戻り値がvoidの場合には戻り値を期待していないため、以下のエラーが発生します。
- javac Test.java
Test.java:5: error: incompatible types: unexpected return value return 0; ^ 1 error
メイン
Javaのmainメソッドは常にmainという名前です。Javaプログラムが開始するとき、常にmainメソッドを探します。以下の例のコードは、mainメソッドがmyMainに変更されています。
public class Test {
public static void myMain(String[] args){
System.out.println("Hello, World!");
}
}
プログラムをコンパイルして実行すると、JREがクラス内のmainメソッドを見つけることができず、以下のエラーが発生します。
- javac Test.java
- java Test
Error: Main method not found in class Test, please define the `main` method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
String[] argsを日本語で言い換えると:引数の文字列配列
Javaのmainメソッドは、String配列型の単一引数を受け取ります。配列内の各文字列は、コマンドライン引数です。コマンドライン引数を使用すると、プログラムの操作に影響を与えたり、実行時にプログラムに情報を渡すことができます。以下の例コードは、プログラムを実行する際に入力するコマンドライン引数を表示する方法を示しています。
public class Test {
public static void main(String[] args){
for(String s : args){
System.out.println(s);
}
}
}
プログラムをコンパイルし、それをいくつかのスペースで区切られたコマンドライン引数と共に実行すると、引数がターミナルに表示されます。
- javac Test.java
- java Test 1 2 3 “Testing the main method”
1 2 3 Testing the main method
結論
この記事では、Java の main メソッドの各コンポーネントについて学びました。さらに Java のチュートリアルで学びを深めましょう。