|
ようやく、みなさんにHelloWorldコードの詳細な説明ができます。いままでは学習していない点が多く細かい説明ができませんでした。ようやくHelloWorldの全てを説明することができます。まずは下記のコードを良く見て下さい。
|
例:HelloWorldのサンプル
|
| |
|
|
| |
/**
HelloWorldクラス
*/
public class HelloWorld {
/**
JavaVMがこのクラスの実行時に呼び出すメソッド
*/
public static void main( String[] args ){
System.out.println("HelloWorld!");
}
}
|
|
| |
|
|
|
うえから説明していきましょう。まず
public class HelloWorld {
の部分、これを説明すると「いかなるクラスからのアクセスも許可されるHelloWorldというクラス」と言うことになりますね。実はここには下記のような「extends
Object」の表現が隠れています。
public class HelloWorld extends Object{
継承の時の学習を思い出してください。特に継承するクラスを指定しないときには、暗黙の了解でjava.lang.Objectクラスを継承します。そのためこのHelloWorldも親クラスはObjectクラスとなります。つまりいかなるクラスであろうと必ずObject型として扱うことが可能だと言うことです。それでは次に
public static void main( String[] args ){
の部分を参照してください。これは「いかなるクラスからもnewせずに実行できるmainメソッド」です。これは戻り値がなく、引数に実行時(下記)に渡されたパラメータ(スペース区切りのtest1,test2,test3)をString配列として受け取っています。
java HelloWorld test1 test2 test3
そして最後に
System.out.println("HelloWorld!");
の部分を良く見て下さい。これはSystemクラスのoutフィールドを参照して、その戻り値のオブジェクトのprintlnメソッドを実行しています。このときoutフィールドはSystemクラスをどこでもnewしていないことからstaticなフィールドであるとわかります。JavaDocを見てみましょう。するとoutフィールドは標準出力へのPrintStreamクラスのインスタンスを表しています。つまりSystem.out.printlnとは、そのPrintStreamクラスのprintlnメソッドを実行していると言うことになります。
このように「.」で区切ったものを直にいくつもつなげて参照やメソッドの呼び出しを行うことは頻繁にあります。このようなときには一番先端から一つ一つJavaDocで調べながら解読していくと意味が理解できます。コード中にやたらと長い一文が出てきても決してあせらずに、落ち着いて解釈しましょう。
|