【Java】Mainメソッドとは?Mainメソッドについて解説!!
Javaプログラムは、どこかで実行を開始する必要があります。
プログラミングを始めた当時、私はどこからプログラムが動いているのかとても気になっていました。
Javaのプログラムはあるクラスのmainメソッドを実行することから始まります。
実行するクラスの名前を選択できますが、メソッドの名前は選択できません。
今回はMainメソッドについて解説していきます。
Mainメソッドとは?
Mainメソッドとは、Javaプログラムの起点となるメソッドとなります。
Javaのプログラムを起動した際に一番最初に実行されるポイントです。
mainメソッドが起点となるため、他のクラスで定義したメソッドなどは
mainメソッド内で呼びだされない限り、実行されることはありません。
また、mainメソッドが存在しない場合、このようなエラーが発生します。
1 |
java Exception in thread "main" java.lang.NoSuchMethodError: main |
ですのでMainメソッドとは一番最初に実行される必要なものだと思ってください。
定義の仕方
宣言の仕方は常に置かれているので書くことはあまりないと思いますが、
以下のように定義されます。
1 2 3 4 5 6 |
public class ClassA { public static void main(String [] args){ } } |
これは、Javaでプログラムを実行したことがある方は見たことがあるかと思います。
そして、mainメソッドにはpublic、staticおよびvoidという3つのキーワードがあります。
これらは何なのか?ともう方もいるかと思いますが、後の記事で説明しますので今回は覚えなくても大丈夫です。
ただし、main()メソッドの宣言にはこれら3つのキーワードが必要でなんだなということは覚えておいてください。
mainメソッドの実行
メソッドのパラメーターリストの後に、最初に左中括弧({)、次に空のスペース、そして右中括弧(})があります。
中括弧内には、mainメソッドの実行時に実行される命令を配置します。
これはメソッド本体とも呼ばれます。
先ほど紹介したコードではメソッドが空なので実行する命令はありません。
それでは次のコードを見てみましょう。
例
1 2 3 4 5 6 |
public class ClassA { public static void main(String [] args) { System.out.println("Hello Flytech!!"); } } |
出力結果
Hello Flytech!!
すると、コンソールに「Hello Flytech!!」と出力されます。
なぜそうなったのかといますと、mainメソッドには次の命令を追加しました。
1 |
System.out.println("Hello Flytech!!"); |
この命令は、System.out.println()の()の中にあるものをコンソールに出力してくださいという命令です。
今回は()の中には「Hello Flytech!!」という文字がありますので、
コンソールには「Hello Flytech!!」と出力されました。
main()メソッドの様々な書き方
main()メソッドを書く4つの方法
main()メソッドは
1 |
public static void main(String [] args){} |
のイメージが強いかと思います。
しかし、これ以外にもmianメソッド()を書く、様々な方法があります。
あまり一般的ではないですが、異なる方法を4つ紹介しましょう。
1 |
public static void main(String args[]) {} |
一般的な書き方になります。
1 |
public static void main(String...args) {} |
引数は引数として表すことができます。
1 |
public strictfp static void main(String[]args) {} |
main()メソッドに strictfp を追加することもできます。
これは、浮動小数点値を扱うときにプロセッサ間の互換性のために使用されます。
1 |
public static void main(final String[]args) {} |
synchronizedとfinalもmain メソッドの有効なキーワードなのですが、ここでは効果はないです。
一方、final を args に適用して、配列が変更されないようにすることができます。
4つの方法でmain()メソッドを実行してみる
先ほど紹介した、4つの方法で実際に動くのか実行してみます。
例
1 2 3 4 5 6 7 |
public class Main { public static void main(String[] args) throws Exception { System.out.println("Hello!!"); } } |
出力結果
Hello!!
例
1 2 3 4 5 6 7 |
public class Main { public static void main(String...args) throws Exception { System.out.println("Hello!!"); } } |
出力結果
Hello!!
例
1 2 3 4 5 6 7 |
public class Main { public static void main(final String[]args) throws Exception { System.out.println("Hello!!"); } } |
出力結果
Hello!!
例
1 2 3 4 5 6 7 8 9 10 |
public class Main { public strictfp static void main(String[]args)throws Exception { System.out.println("Hello!!"); } } |
出力結果
Hello!!
どのパターンでも実行することができました。
しかし、main()メソッドはあまり気にすることはありませんので、変更が必要な場合以外は、
一番最初に紹介したパターンで定義した方が安全だと思います。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。