トップ 言語 Java クラス、メソッド、インターフェース Javaのメソッドとは mainメソッド、コンストラクタ、命名規則 Javaのmainメソッドとは
実行方法、引数、特定のクラスのmain実行など。Javaのmainメソッドとは何かについてまとめています。
Javaのmainメソッドとは、作成したJavaのプログラムを実行するときに最初に呼び出されるメソッドです。
Javaのプログラムを実行する際にはjavaコマンドを使用します。 このコマンドを使用すると、引数で指定したクラスをJVM(Java仮想マシン)がロードし、このクラスのmain()メソッドを呼び出します。 つまり、Javaアプリケーションのクラスにおけるmain()メソッドは、実行を制御するためのスタート地点となります。
Javaプログラムには必ずmainメソッドが必要ですが、意識して作らないケースもあります。 たとえば、TomcatなどにのせるWebアプリケーションを作成する場合は、Javaプログラムの一部をわれわれはつくります。 Tomcat側にmainメソッドが実装されているので、mainメソッドは作成する必要はありません。 作成してもTomcatから呼び出されないです。
mainメソッドの形は、以下のようにpublicでstatic、戻り値はvoidで、引数はString型の配列とJavaの仕様で決められています。 ここではこれらのキーワードの意味についてまとめていきます。
public static void main(String[] args)){ : }
public修飾子を付けたメソッドは、メソッドの定義元のクラスの外部、外側のコードからアクセスできるようになります。 mainメソッドはJavaの実行環境であるJVMから呼び出され、そのJVM自体がメソッドの定義元のこのクラスの外側にあるのでpublicが付きます。
JVMはインスタンス化しないでmainメソッドを呼び出す仕様なのでstaticを付けます。 static修飾子を付けたメソッドは、クラスをインスタンス化することなくアクセスできるようになります。 JVMからもこのメソッドをクラスのインスタンス化なしに呼び出せます。 なお、クラス名.mainメソッドでmainメソッドは呼び出すことができます。
メソッドが呼び出された結果、メソッドの呼び出し元に値を返さない場合に設定する戻り値の型です。 mainメソッドは戻り値なしの仕様になります。
コマンドラインからアプリケーションが実行された際に、コマンドラインの引数をmainメソッドは受け取る機能があります。 このコマンドラインの引数は、mainメソッドの引数に配列配列で設定されてmainメソッドに渡されます。 mainメソッドの引数の方もString[]であることが仕様で決められています。 Javaは同じ名前のメソッドが定義できますので、もし違う型の引数にした場合、JVM側から別のメソッドと見なされてしまいます。 String[]ではないと、JVNから認識されないので注意が必要です。
実際に例を見てみると分かりやすいと思います。 ここでは、コマンドライン引数を受け取る例を見てみます。
class Sample { public static void main(String[] args) { System.out.println("args.length : " + args.length); for (int i = 0; i < args.length; i++) { System.out.println("args[" + i + "] : " + args[i]); } } }
javac Sample.java
実行は「java Sample <引数1> <引数2> ・・・」のように実行します。
java Sample 1 2 3 args.length : 3 args[0] : 1 args[1] : 2 args[2] : 3
サンプルプログラムの実行結果を見ると分かるように、 コマンドラインから与えられた引数「1 2 3」は、String[]に0番目要素から順番に設定されます。 C言語では、一番最初にプログラム名が設定されますが、Javaの場合は引数の先頭から設定されます。
サンプルのように1つのJavaクラスだけで作られたプログラムを実行する場合は問題になりませんが、 大きくなって複数のJavaクラスとなって、クラスファイルをアーカイブにまとめたjarファイルをロードする場合や mainメソッドをもったクラスが複数ある場合など、javaコマンド実行時にちゃんと教えてあげる必要があります。
こうしたときを想定して、Javaコマンドの実行の参考として、もうちょっとjavaコマンドのオプションを入れた実行例を見てみます。
例えば、以下のようなオプションと引数を指定してjavaコマンドを実行します。
java -Dfile.encoding=UTF-8 -classpath <jarファイル> -XmxXXXM -XmsXXM -XX:PermSize=XXXm -XX:MaxPermSize=XXXm <パッケージ.クラス名> <コマンドライン引数>
-D<プロパティ名>=<プロパティの値>という形でJavaプログラムで使用するプロパティが設定できます。 なお、「file.encoding」はファイルの文字コードを指定するプロパティです。よく文字化けの原因になるためあげてみました。
他にも実現方法はありますが、-classpathというオプションにjarファイルやディレクトリのパスを 指定するとライブラリや自作のjarファイルをロードできます。 「;セミコロン」や「:コロン」で区切るといくつでも指定できます。
-X○○でメモリ関連の設定が行えます。プログラムが大きくなるとヒープサイズやメモリ不足が発生するので拡張のために追加します。
mainメソッドのあるクラスを指定します。 パッケージを指定することで一意にクラスが指定できます。 今回のサンプルでは、パッケージ設定していないので「パッケージ.」は不要です。
上述のコマンドライン引数になります。
Javaのメソッドとは何かについてまとめています。クラスメソッド、staticメソッドの説明、mainメソッドやコンストラクタについてもまとめています。
Javaとは?から言語の枠を超えるところまで、Java言語についてまとめています。
スポンサーリンク
サイト内のページ
言語
C・C++
/HTML
/Java
/JavaScript
/PHP
/シェルスクリプト
開発環境
Ant
/Burp
/Eclipse
/Fiddler
/gcc
/gdb
/Git
/g++
/JDK
/JMeter
/JUnit
/Teraterm
/ZAP
技術・仕様
Ajax
/CORBA
/Jakarta EE(旧称J2EE、Java EE)
/JNI
ライブラリ/Framework/CMS
bootstrap
/jQuery
/FuelPHP
/Lucene
/MyBatis
/Seasar2
/Spring
/Struts
/WordPress
Web API
Google Maps
ITインフラOSとミドルウェア
Linux
/Windows
/シェル
ActiveMQ
/Tomcat
/MariaDB
/MySQL
/Nagios
/Redis
/Solr
ITインフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
3.16.51.237
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…