最も基本的なプログラム

Hello,World

これから、Javaでプログラムを作る方法を学習していきましょう。まず最初は、一番基礎的で、かつ有名なサンプルであるHello,Worldを紹介します。内容は単純で、コンソール画面に「Hello,World.」という文字列を表示するだけです。

サンプルプログラム

では実際に、そのプログラムを入力して、試してみましょう。以下のプログラムを入力・実行してみてください。

Sample101.java
package day1;

public class Sample101 {
	/*
	 * Javaを使った最も基本的なプログラム
	 */
	public static void main(String[] args) {
		System.out.println("Hello,World.");	//	「Hello,World.」という文字列を表示します。
	}

}
実行結果
Hello,World.

実行結果からもわかるとおり、このプログラムを実行すると、"Hello,World."という文字列が表示されます。このプログラムは、Java言語に限らず、ほとんどのプログラミング言語の入門書でいちばん最初に記述されているサンプルプログラムである、Hello,Worldと呼ばれる、簡単な文字列が画面表示されるだけのものです。

プログラムの仕組み

パッケージ

では、一体、このプログラムはどのような仕組みになっているのでしょうか?

1行目に出てくる、packageという記述は、パッケージと呼ばれ、このプログラムを分類する「入れ物」の名前を決める部分です。ここでは、day1というパッケージで同一パッケージないに作成されるプログラムは互いに関係性が深いもものとされます。

パッケージの設定
package day1;

とすることにより、このプログラムはday1と呼ばれるパッケージに属することが示されます。

クラス名

続いて、3行目を見てみましょう、ここで、classという名前の後に、Sample101と記述されていますが、これはクラス名と呼ばれるものです。クラスの詳細については後ほど詳しく説明しますが、プログラムのまとまった処理の単位であると思っていてください。書式は次の通りになります。

クラス名の指定
class (クラス名)

なお、同一パッケージないには、同じ名前のクラスが存在してはいけません。逆にいえば、パッケージが異なれば、同じクラス名が存在してもかまいません。

main

7行目のpublic static void main(…)の部分ですが、ここはメインメソッドの宣言と呼ばれます。Java言語は、原則的にこの中に処理を書くことにより、プログラムが実行されます。処理の中身は、"{"および"}"で囲まれています。この処理の中には、System.out.println()という命令があり、これは、コンソールに文字を出力するものなのです。詳細については後述しますが、今な「main()内に処理を書けば、実行される」と思ってください。

続いて、8行目のSystem.out.println()を見てみましょう。これは()で囲まれたものを、表示する命令です。文字列の場合は、"で挟みます。つまり、このプログラムで文字列でHello,World.を表示している部分はここになります。

System.out.printlnの書式
System.out.println(内容);

コメント

ところで、このプログラムの中に、出てくる//や、/*  */という記号が出てきます。しかも、その中には、文章が書いていますが、プログラムの実行結果には何も関係ないように見えます。この記号のことを、コメントと言います。

コメントは、プログラムの注釈を付けるためのもので、プログラマーが、プログラムの各所に書いて、処理の意味などを記述する時に用いられます。実行結果には何ら影響を与えませんが、これを付けるとプログラムが非常にわかりやすくなります。

そのため、プログラマーは、出来るだけコメントをつけるようにすることが勧められています。なお、コメントには、以下(表1-1)のような種類があります。

表1-1:Javaで用いられるコメント
記述方法 名前 特徴 使用例
/*  */ ブロックコメント /*と、*/の間に囲まれた部分がコメントになる。
複数行にわたってコメントをつけることが出来る。
/* 
   このように複数行
   コメント可能です。
*/
// 行コメント 一行にコメントをつけることが出来る。 // コメント

色々表示してみましょう。

サンプロプログラム

次のサンプルは、System.out.println()を用いたサンプルです。実行して結果をみてみましょう。

list1-2:main.c
package day1;

public class Sample102 {

	public static void main(String[] args) {
		//	数値の表示
		System.out.print(123);
		System.out.println(456);
		//	文字列の表示
		System.out.print("ABC");
		System.out.println("DEF");
	}

}
実行結果
123456
ABCEDF

このように、様々な記号を表示することが出来ました。では、いったいどうしてこのような結果になるのでしょうか。

printlnとprintの違い

まず、7行目と8行目、10行目と11行目の違いに注目してください。最初のサンプルでSystem.out.の後には、printlnを使っていましたが、ここでは、printlnを使っています。この違いは、print()では、()内のものを表示した後改行をしない命令であり、println()は表示後改行を行うという違いがあるのです。

そのため、7行目で「123」と表示した後、8行目で「456」と表示していて、この二つがつながるのは、最初の表示で改行を行わないからです。10行目と11行目に関しても同じです。

文字列以外の表示

再び7行目、8行目に注目してみてください。10行目、11行目で文字列を表示する場合には、"(ダブルクォーテーション)で文字列を挟んでいるのに対し、ここでは用いていません。このように、数値を表示するときには"で挟む必要ががありません

エラーの処理

コンパイルエラー

まずは、以下のプログラムを入力、実行してみてください。

Sample103.java
package day1;

public class Sample103 {

	public static void main(String[] args) {
		System.out.printll("ABCEDF");
	}

}

プログラムを実行しようとすると、次のようなメッセージが出ていると思います。

コンパイラが発するエラーメッセージ
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    メソッド printll(String) は型 PrintStream で未定義です

    at day1.Sample103.main(Sample103.java:6)

これは何を意味するのでしょうか?実はこのメッセージ、ソースコードのビルドに失敗したことを意味するメッセージなのです。つまり、このプログラムには文法上誤った記述があるということなのです。 コンパイラは、誤った記述がある場合、このようなメッセージを発します。当然ながらプログラムを実行することは出来ません。

では、一体どこに誤りがあるのでしょうか?コンパイラーの発するエラーメッセージに従い、6行目を見ると、printllとなっています。これは本来、printlnとすべきところを、誤って記述したものです。 そこで、ここを正しい記述に直してみましょう。

Sample103.java(再掲載)
package day1;

public class Sample103 {

	public static void main(String[] args) {
		System.out.println("ABCEDF");
	}

}

実行結果
ABCDEF

実際にもっと複雑なプログラミングを行う場合も、このようにしてプログラムの誤りを直しながら実行することが求められます。

練習問題 : 問題1.