class Test { public static void main(String[] argv){ System.out.println("Hello World"); System.out.println("Hello Again"); } }ファイルのトップレベルのclassの後に定義しようとするクラス名を書き,ク ラスの中身の定義は最初の行の'{'と対応する最後の '}'の間に記述する. 今 のところは、ファイル名のうちの「.java」を取り除いた部分と対応している ことだけに注目するだけで良い。
クラスはデータフィールド(data field), メソッド(method)の定義の集合で ある. クラス Test の定義では main という名前のメソッドだけを含んでいる. static, void, String[]などの意味は, 以下の通りだが,今見てもわからない と思う.後から読み返すと理解できるはずである. 「クラス」,「データフィールド」,「メソッド」,「引数」など未知の単 語がたくさん出てくるので,このあたりで頭がショートしてしまう人もいるか もしれない.ある単語を説明するために別の未知単語を用いるので,説明になっ ていないのは確かなのだが,プログラムの実行に関するイメージをつかまない うちに,説明するのも難しい(プログラム言語を数学的に定義しようという試 みもあるが,そのための道具の使い方を覚えるだけで1学期の講義では足りな い).
- static
- main という名前のメソッドが,静的(static)なメソッド(オブジェクト を介さなくても使えるメソッド)だということを示す.
- void
- 英和辞典を引くと,「空,空虚」などの訳が載っているが,ここでは main メソッドが値を返さないことを示す.
- String[]
- メソッドの引数(「ひきすう」と読む)のクラスを定義している.String というクラスは文字列を表現するためにシステムに用意されたクラスで,説明 は こちら . [] をつけると,引数がString クラスの要素ではなくString ク ラスの配列の要素であることを示す.
後でオブジェクト型の説明をするまでは,1つのクラスからなり,mainと いうメソッドしかないプログラムのみを扱うので,それまではそれぞれの用語 が使われた時に,プログラムの字面のどの部分に対応するかだけを覚えるだけ で良い.
java クラス名とすると,そのクラスの定義中の main という名前のメソッド(名前だけでな く,型定義も一致する必要はあるが)から実行を開始する.
mainのメソッドの定義は 2行目の'{'と5行目の'}'の間の2行である.
System.out.println("Hello World");という文と,
System.out.println("Hello Again");という2つの文からなる. System.out.printlnというのは「Systemというクラ スのstatic データである out というPrintStreamのprintlnというメソッド」 というものを意味するが, 今のところは一まとまりで「文字列(String)を改行 つきで出力する命令」と考えて良い. 後で説明する制御文などでない普通の文 の並びは上から順に実行されるので,
Hello World Hello Againのように2つの文が順に実行されるのである.
より詳しい説明を見たい人は, こちら にSystemクラスの説明がある.
ここまでの例では,ファイル名を「クラス名.java」としなくても,コンパ イル実行できたが,後で出てくる「publicなクラス」の場合にはファイル名と クラス名の関連付けがなされるので,ファイル名を「クラス名.java」とする 習慣をつけておくと良い.
先ほどのプログラムにしつこいコメントを加えたものが以下のプログラムであ る.コンパイル結果,実行結果はこれまでと変わらない.
class Test { // クラス Test の定義の開始 // メソッド main の定義の開始 public static void main(String[] argv){ // "Hello World"という文字列を改行付で出力する. System.out.println("Hello World"); // "Hello Again"という文字列を改行付で出力する. System.out.println("Hello Again"); } // メソッド main の定義の開始 }// クラス Test の定義の終了