logo

Java main() メソッド

main() は、JVM が Java プログラムの実行を開始する開始点です。 main() メソッドがないと、JVM はプログラムを実行しません。 main() メソッドの構文は次のとおりです。

Java メイン メソッド

公共: アクセス指定子です。 JVM がプログラムの実行ポイントを識別できるように、main() メソッドの前に public キーワードを使用する必要があります。 main() メソッドの前に private、protected、default を使用すると、JVM からは認識されなくなります。

静的: キーワード static を使用すると、メソッドを静的にすることができます。オブジェクトを作成せずに main() メソッドを呼び出す必要があります。静的メソッドはオブジェクトを作成せずに呼び出すメソッドなので、main() メソッドを呼び出すためにオブジェクトは必要ありません。

空所: Java では、すべてのメソッドに戻り値の型があります。 Void キーワードは、main() メソッドが値を返さないことをコンパイラに認識させます。

主要(): これは、JVM で事前定義されているデフォルトの署名です。これは、プログラムを 1 行ずつ実行し、このメソッドの完了後に実行を終了するために JVM によって呼び出されます。 main() メソッドをオーバーロードすることもできます。

文字列引数[]: main() メソッドはユーザーからのデータも受け取ります。文字列配列と呼ばれる文字列のグループを受け入れます。コマンドライン引数を文字列値の形式で保持するために使用されます。

 main(String args[]) 

ここで、 agrs[] は配列名であり、文字列型です。文字列のグループを格納できることを意味します。この配列には数値のグループを文字列形式のみで格納することもできることに注意してください。 main() メソッドに渡される値は引数と呼ばれます。これらの引数は args[] 配列に格納されるため、通常は args[] という名前が使用されます。

main() メソッドが String args[] なしで書かれた場合はどうなりますか?

JVM は main() メソッドを認識しないため、プログラムはコンパイルされますが、実行されません。 JVM は常に文字列型の配列をパラメーターとして持つ main() メソッドを検索することに注意してください。

実行プロセス

まず、JVM は静的ブロックを実行し、次に静的メソッドを実行して、プログラムに必要なオブジェクトを作成します。最後に、インスタンス メソッドを実行します。 JVM は、静的ブロックを最高の優先順位で実行します。これは、JVM がプログラム内で main() メソッドを探す前であっても、まず静的ブロックに移動することを意味します。

 class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } } 

出力:

 Static block Static method 

静的ブロックがプログラム内に存在する場合、JVM は最初にそれを実行することがわかります。その後、main() メソッドを検索します。 main() メソッドが見つからない場合は、エラーが発生します。

main() メソッドを持たないプログラムは実行時にエラーを返します。

 class DemoStaticBlock { Static //static block { System.out.println('Static block'); } } 

出力:

 Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application 

したがって、 main() メソッドは常に次のように記述する必要があります。

 public static void main(String args[]) 

public と static を交換して、次のように書くことができます。

 static public void main(String args[]) 

String 型配列に別の名前を使用して、次のように記述することもできます。

 static public void main(String[] x) 

main() メソッドのさまざまな記述方法は次のとおりです。

 static public void main(String []x) static public void main(String...args) 

文字列...引数: これにより、メソッドはゼロまたは複数の引数を受け入れることができます。 String と array の間にはちょうど 3 つのドットが必要です。それ以外の場合はエラーが発生します。

main() メソッドを持たないプログラムですが、コンパイルおよび実行は正常に行われます。

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

出力:

 Java 

main() メソッドのオーバーロード

main() メソッドをオーバーロードすることもできます。クラス内には main() メソッドをいくつでも定義できますが、メソッドのシグネチャは異なっていなければなりません。

 class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } } 

出力:

小さじ対大さじ
 main method invoked 6