logo

Java main() メソッド – public static void main(String[] args)

Javaのmain()メソッド ここからの出発点です JVM Java プログラムの実行を開始します。プログラムに main メソッドが欠落している場合、JVM はコードを実行しません。したがって、これは Java の最も重要なメソッドの 1 つであり、これを正しく理解することが非常に重要です。

Java コンパイラまたは JVM は、Java プログラムの実行を開始するときに main メソッドを探します。 main メソッドのシグネチャは、JVM がそのメソッドをエントリ ポイントとして認識できるように、特定の方法で行う必要があります。メソッドのシグネチャを変更すると、プログラムはコンパイルされますが、実行されません。



Java プログラムの実行、 java.exe と呼ばれます。次に、Java.exe は Java ネイティブ インターフェイスまたは JNI 呼び出しを行い、JVM をロードします。 java.exe はコマンド ラインを解析し、新しい String 配列を生成し、main() メソッドを呼び出します。デフォルトでは、メインスレッドは常に非デーモンスレッドです。

main() メソッドの構文

main() メソッドの構文は常に次のように記述されます。

DFA オートマトンの例

Java main() メソッドの構文



main() メソッドの定義で最も一般的なものを以下の例に示します。

ジャワ
// Java Program to demonstrate the // syntax of the main() function class techcodeview.com {  public static void main(String[] args)  {  System.out.println('I am a Geek');  } }>

出力
I am a Geek>

のすべての単語 パブリック静的ボイドメイン このステートメントは、以下で説明する JVM 内での意味を持ちます。

1.公共

それは アクセス修飾子 、どこから誰がメソッドにアクセスできるかを指定します。 main() メソッドをパブリックにすると、グローバルに利用できるようになります。現在のクラスには存在しないため、JVM がクラスの外部から呼び出せるようにパブリックに作成されます。



main メソッドがパブリックでない場合、そのアクセスは制限されます。

例:

ジャワ
// Java Program to demonstrate the // use of any other access modifier // other than public class techcodeview.com {  private static void main(String[] args)  {  System.out.println('I am a Geek');  } }>


出力

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

2. 静的

それは キーワード つまり、メソッドに関連付けられている場合、それは クラス関連のメソッド 。の 主要() メソッドは静的であるため、JVM は何もせずにメソッドを呼び出すことができます。 クラスのインスタンス化 。これにより、オブジェクトを呼び出すためだけに宣言されたオブジェクトによって使用されるメモリの不必要な浪費も節約されます。 主要() JVM によるメソッド。

main が静的でない Java コードを実行しようとすると、エラーが発生します。

例:

ジャワ
// Java Program to demonstrate the // error occurred when we dont use the // static keyword in the main() method class techcodeview.com {  public void main(String[] args)  {  System.out.println('I am a Geek');  } }>


出力

CSSの不透明度遷移
Error: Main method is not static in class test, please define the main method as: public static void main(String[] args)>

3. ボイド

それは キーワード そして慣れています メソッドが何も返さないことを指定する 。として 主要() メソッドは何も返しません。戻り値の型は次のとおりです。 空所 。すぐに 主要() メソッドが終了すると、Java プログラムも終了します。したがって、そこから戻っても意味がありません。 主要() JVM としてのメソッドは、その戻り値に対して何もできません。

main メソッドが void でない場合、エラーが発生します。

例:

ジャワ
// Java Program to demonstrate the // error occurred when we dont use the // void return type in the main() method class techcodeview.com {  public static int main(String[] args)  {  System.out.println('I am a Geek');  return 1;  } }>


出力

Error: Main method must return a value of type void in class Main, please define the main method as: public static void main(String[] args)>

4.メイン

それは Javaのメインメソッドの名前 。それは 識別子 JVM が Java プログラムの開始点 。キーワードではありません。

main メソッドの開始中に名前を変更すると、エラーが発生します。

例:

Javaチェックがnullです
ジャワ
// Java Program to demonstrate the // error occurred when we name the // main() method as newmain. class techcodeview.com {  public static void newmain(String[] args)  {  System.out.println('I am a Geek');  } }>


出力

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

5. String[] 引数

それ Javaコマンドラインを保存します 引数 型の配列です java.lang.String クラス。ここで、String 配列の名前は次のとおりです。 引数 ただし、これは固定されておらず、ユーザーは代わりに任意の名前を使用できます。

例: String[]の実行処理

ジャワ
// Java Program to demonstrate // the working of String[] args // in the main() method class techcodeview.com {  // Commamd-Line Code ->// javac techcodeview.com.java // java techcodeview.com 1 2 3 public static void main(String[] args) { for (String elem : args) System.out.println(elem);  } }>>


出力

1 2 3>

上記の main の署名とは別に、以下を使用できます。 public static void main(String args[]) または public static void main(String… args) Java の main 関数を呼び出します。 main メソッドは、その仮パラメータが文字列配列の仮パラメータと一致する場合に呼び出されます。

注記: Main メソッドは Java では複雑です

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

Java では main() メソッドのオーバーロードが可能です。つまり、プログラム内に任意の数の main() メソッドを作成できます。

Java で main() メソッドをオーバーロードするには、さまざまなパラメータを指定して main() メソッドを作成する必要があります。

例:

ジャワ
public class Main {  public static void main(String[] args) {  if (args.length == 0) {  System.out.println('Running main() with no arguments');  } else if (args.length == 1) {  try {  int value = Integer.parseInt(args[0]);  main(value);  } catch (NumberFormatException e) {  main(args[0]);  }  } else {  // Handle more arguments as needed  }  }  public static void main(int value) {  System.out.println('Running main() with integer argument: ' + value);  }  public static void main(String message) {  System.out.println('Running main() with string argument: ' + message);  } }>

出力:

グレートアンドラ
Running main() with no arguments>

結論

Java main() メソッドは Java プログラムの開始点です。これは JVM によって実行される本体であり、main() メソッドがなければ Java プログラムは実行できません。

もっと詳しく知る: Java チュートリアル

Java main() メソッド - FAQ

mainメソッドはintでもいいのでしょうか?そうでない場合は、なぜですか?

いいえ、Java の main メソッドを int にすることはできません。それには主に 2 つの理由があります。

  1. JVM が探すのは public static void main(String[] args) これはエントリの標準署名であるため、プログラムの実行を開始するとき。 int 署名を使用すると、プログラムの実行中に混乱や互換性の問題が発生する可能性があります。
  2. void 署名を持つということは、main メソッドが何も返さないことを意味しますが、int 署名を使用するということは、main 関数が整数を返さなければならないことを意味し、これは JVM にとって役に立ちません。

main メソッドなしで Java プログラムを実行できますか?

いいえ、から JDK7 main メソッドは必須です。コンパイラは最初に main() が存在するかどうかを確認します。プログラムに main メソッドが含まれていない場合は、「クラスに main メソッドが見つかりません」というエラーが表示されます。

このトピックの詳細を確認するには、を参照してください。 Javaではmainメソッドは必須ですか? 記事。

String[] 引数なしで main() メソッドを宣言できますか?

はい、String[] 引数なしで main() メソッドを宣言できます。ただし、以下の例のようにドライバー クラス内の main メソッドを直接実行しようとすると、エラー メッセージが生成されます。

以下は、String args[] を使用しないプログラムを作成する正しい方法です。

ジャワ
import java.io.*; import javafx.application.Application; abstract class GFG  extends javafx.application.Application {  // static block  static  {  System.out.println('Hello, world!');  System.exit(0);  } }>

出力

Hello, world!>

なぜ Java では main void があるのでしょうか?

main メソッドは、Java でのプログラム実行の開始点として機能します。 JVM はメインからの戻り値を期待しません。そのような値を受信または処理するメカニズムがないからです。