導入
Javaのmain
メソッドは、Javaプログラミングを始める際に最初に学ぶメソッドであり、Javaプログラムの実行エントリーポイントです。 main
メソッドには、実行するコードや他のメソッドを呼び出すコードを含めることができ、プログラムの一部である任意のクラスに配置することができます。 より複雑なプログラムでは、通常、main
メソッドのみを含むクラスがあります。 通常、Main
という名前のクラスを呼び出すだけで、main
メソッドを含むクラスを呼び出すことができます。
以下の例では、main
メソッドを含むクラスはTest
と呼ばれています:
public class Test {
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
この記事では、main
メソッドの各コンポーネントの意味を学びます。
Javaメインメソッドの構文
main
メソッドの構文は常に次のようになります:
public static void main(String[] args){
// some code
}
String
配列の引数の名前のみを変更できます。 たとえば、args
をmyStringArgs
に変更することができます。 String
配列の引数はString... args
またはString args[]
として記述することができます。
public
メインメソッドのアクセス修飾子はpublic
である必要があります。これにより、JREはこのメソッドにアクセスして実行することができます。メソッドがpublicでない場合、アクセスが制限されます。次の例のコードでは、メインメソッドにpublic
のアクセス修飾子がありません:
public class Test {
static void main(String[] args){
System.out.println("Hello, World!");
}
}
プログラムをコンパイルして実行すると、次のエラーが発生します。メインメソッドがpublicでないため、JREがそれを見つけることができません:
- javac Test.java
- java Test
OutputError: 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
static
Javaプログラムが開始されると、クラスのオブジェクトは存在しません。JVMはクラスをメモリにロードし、最初にクラスのインスタンスを作成せずにメインメソッドを呼び出すために、メインメソッドはstatic
である必要があります。次の例のコードでは、メインメソッドにstatic
修飾子がありません:
public class Test {
public void main(String[] args){
System.out.println("Hello, World!");
}
}
プログラムをコンパイルして実行すると、次のエラーが発生します。メインメソッドがstatic
ではないためです:
- javac Test.java
- java Test
OutputError: Main method is not static in class Test, please define the `main` method as:
public static void main(String[] args)
void
すべてのJavaメソッドは戻り値の型を指定する必要があります。Javaのmain
メソッドの戻り値の型はvoid
です。なぜなら、何も返さないからです。main
メソッドの実行が終了すると、Javaプログラムは終了するため、戻り値のオブジェクトは必要ありません。以下の例のコードでは、main
メソッドがvoid
の戻り値であるにもかかわらず、何かを返そうとしています:
public class Test {
public static void main(String[] args){
return 0;
}
}
プログラムをコンパイルすると、以下のエラーが発生します。なぜなら、Javaはvoid
の戻り値を期待していないからです:
- javac Test.java
OutputTest.java:5: error: incompatible types: unexpected return value
return 0;
^
1 error
main
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
OutputError: 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"
Output1
2
3
Testing the main method
結論
この記事では、Javaのmain
メソッドの各コンポーネントについて学びました。さらにJavaのチュートリアルを使って学習を続けてください。