Help us understand the problem. What is going on with this article?

【Java】Public static void main(String[] args)の意味

public static void main(String[] args)はJavaを実行するのに、必須のメソッドです。
構文はひとつでも間違えるとエラーになり、実行できません。
ひとつひとつに意味があるためです。

Hello.java
class Hello{
    public static void main(String[] args) {
        System.out.println("Hello World");        
    }
}

各項目の意味は、以下の通りです。

項目 意味
public どこからでも参照可能
static インスタンス可(new)しなくても外部から使用可能
void 戻り値なし
main メソッド名
String[] 引数をString型の配列で受け取る
args 引数名、argument(和訳:引数)の複数形でargumentsの略省

argsについて

String[] argsは、プログラム起動時に指定する値(コマンドライン引数)です。
引数名argsは、慣習的にargsが使われていますが、別の名前でも使用できます。
慣習的にargsが使われている理由は、JavaはC言語の後継であり、C言語の慣習をそのまま受け継いでいるためです。

C言語ので使われている引数名

  • argv(argument vector(引数の配列))
  • argc(argument count(引数の個数))

引数の動作確認

Hello.java
class Hello{
    public static void main(String[] args) {
        System.out.println(args[0]);        
    }
}
  • 実行結果
$ java Hello "Hello world"
Hello world
  • argsをsampleに代える
Hello.java
class Hello{
    public static void main(String[] sample) {
        System.out.println(sample[0]);        
    }
}
  • 実行結果
$ java Hello "Hello world"
Hello world

構文を誤った場合

構文を誤った場合は以下のような実行結果になります。

$ java Hello "Hello world"
エラー: メイン・メソッドがクラスHelloで見つかりません。次のようにメイン・メソッドを定義してください。
   public static void main(String[] args)

誤った構文例

  • 引数をString型の配列以外にした場合
Hello.java
class Hello{
    public static void main(Integer[] sample) {
        System.out.println(sample[0]);        
    }
}

引数がString型である理由は、コマンドラインから受け取る値は、人間が入力する文字であり、それは文字列であるという思想から

kahatato
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away