Javaのmain関数の詳細

4362 ワード

JAVAの主な関数は私达が更に熟知したので、すべてのJAVAの言语を学んだことがある人はすべて熟练してこのプログラムの入り口の関数を书くことができると信じて、しかし主な関数に対してどうしてこのように书いて、その中のすべてのキーワードはそれぞれどんな意味で、すべての人がすべて简単に答えることができるのではありませんかもしれません.私も学习の中でこの问题に出会って、ネット上で资料を検索することを通じて、そして自分の実践をプラスしてついに少し心得があって、保留する勇気がなくて、书いてみんなと分かち合います.
主関数の一般的な書き方は以下の通りです.
 public static void main(String[] args){…}

これらのキーワードの役割をそれぞれ説明します.
(1)publicキーワード、これはよく理解して、主関数をpublicと宣言するのは他のクラスにこの関数にアクセスできることを教えることです.
(2)staticキーワードは,コンパイラmain関数が静的関数であることを知らせる.すなわちmain関数のコードは静的記憶領域に格納され,すなわちクラスが定義されるとこのコードは既に存在する.main()メソッドがstatic修飾子を使用していない場合、コンパイルはエラーしませんが、プログラムを実行しようとするとエラーが発生し、main()メソッドが存在しないことを示すメッセージが表示されます.main()を含むクラスはインスタンス化されていない(すなわち、このクラスのオブジェクトがない)ため、main()メソッドも保存されません.static修飾子を使用すると、この方法は静的であり、インスタンス化する必要がなく使用できることを示します.
(3)voidキーワードはmain()の戻り値がタイプなしであることを示す.
(4)パラメータString[]args,これが本稿の重点である.
第一に、プログラム使用者は、コマンドライン状態であるクラスにパラメータを渡すことができる.次の例を見てください.
public class ArgsDemo {
  public static void main(String[] args) {
  String str = new String();
  for (int i = 0; i < args.length; i++) {
  System.out.println(args[i]);
  str += args[i];
  }
  System.out.println(str);
  }
  }

Javac ArgsDemo.javaコマンドを使用してArgsDemo.classファイルを生成します.次に、「java ArgsDemoパラメータ1パラメータ2パラメータ3...」の形式でArgsDemoクラスにパラメータを渡します.このサンプル・プログラムは、まずパラメータを出力し、その後、すべてのパラメータの和を出力します.例えばjava ArgsDemo a b cでは、次のような出力が得られます.
  a

  b

  c

  abc

なお、ここでのサイクル条件がiでない場合
Exception in thread “main” java.lang.ArrayIndexOutOfBoundException:3

  at ArgsDemo.main(ArgsDemo.java:5)

第二に、main()を含むクラスにパラメータを別のクラスに渡すことができます.次の例です.
public class A {
  public static void main(String[] args)
  {
  for(int i=0;i out.println(args[i]);
  }
  }
  public class B {
  public static void main(String[] args)
  {
  c = new A();
  String[] b = {"111","222","333"};
  c.main(b);
  }
  }

まずclass Aを定義し、Aにmain()関数を定義し、パラメータargsを出力します.次にclassBを定義し、BでAのインスタンスcを初期化し、cにパラメータを渡し、cのmainメソッドを呼び出して入力したパラメータ値を印刷します.出力結果は次のとおりです.
 111

 222

 333

main()関数は静的関数であり、インスタンス化を必要とせずに使用できるため、Bは以下の書き方でも同様の機能を果たすことができる.
public class B {
  public static void main(String[] args)
  {
  //A c = new A();
  String[] b = {"111","222","333"};
  A.main(b);
  }
  }

まとめ:パラメータargsの主な役割は、プログラム使用者がコマンドライン状態でプログラムと対話するための手段を提供することである.さらに,他のクラスでmain()関数を直接使用し,パラメータを渡すことも可能であるが,この方法はあまり一般的ではないが,結局我々に選択肢を提供した.