「初めてのプログラム」
では、とにかく実際にプログラムを作ってみましょう。ワープロやテキストエディタを起動し、以下のプログラムを書いてください(あ、コピー&ペーストすればいいのか)。
public class Test { public static void main (String args []) { System.out.println ("Hello."); } }
記述したら、「Test.java」という名前のテキストファイルで保存します。Windowsユーザーの方は、「Test.java.txt」とならないように注意して下さい。「java」が拡張子です。 では、できあがったテキストをコンパイルしてJavaのプログラムにしてみましょう。方法は次のようになります。
作成したテキストファイルのアイコンを、Java Compilerにドラッグ&ドロップします。MRJの場合、「javac」という名前のがそれ。ドラッグ&ドロップし、起動した画面で「Do Javac」ボタンを押すとコンパイルされます。
移動したら、「javac Test.java」を実行します。問題がなければコンパイルされます。
問題なくコンパイルが実行されると、同じ階層内に「Test.class」というファイルが作成されます。これがJavaのプログラムファイルです。一般に「クラスファイル」と呼ばれています。
では、できあがったJavaのプログラムを実行してみましょう。
2.「java Test」を実行します。
プログラムを実行すると、画面に「Hello.」と表示されます。これが初めてのプログラムというわけです。
もしうまく動かなかった場合には、以下の点をチェックしましょう。
1.テキストを打ち間違えていないか。特に注意するのは、大文字と小文字。Javaでは大文字と小文字は別の文字として認識される。「public」を「Public」などとやると、もう動かないので注意。 また、全角の英数字を使ったりしてもダメ。ソースコードは基本的に全て半角英数字のみ!
2.テキストファイルの名前を「Test.java」以外の名前にしていないか。
3.環境変数にclasspathというのが既に設定されていないか。最近のWindowsユーザーの中には、この問題で引っ掛かる人が増えてきている。JDKでは「classpath」という環境変数でライブラリのある場所を設定しているが、他のアプリで全く同名の変数を使っているものなどがあると、ライブラリの場所が見つからず実行時にエラーとなる。環境変数にclasspathというものがないか確認すること。そして、もしあったならば、設定値の後にカレントディレクトリ(.)とJDKのLibフォルダのパスを追記しておく(例えば、設定値の末尾に「;.;c:\jdk131\lib」という具合に追記する)。
さて、それでは説明をしていきましょう。このプログラムは、次のような形で書かれています。
public class 《クラス名》{ public static void main (String args []) { 《実行する命令》; } }これでもなんだかわからない? うん、そうでしょうね、ではもう少し説明しましょう。
最初の「class〜」というのは、「クラス」というものを定義します、という宣言文です。Javaでは、それぞれのプログラムは「クラス」と呼ばれる塊になっています。この「クラス」を作ることが、いわばアプリケーションを作ることなのです。Javaのアプリケーションは、このクラスが集まって動きます。あるクラスの中から別のクラスを呼び出したりして動いているわけです。(その前のpublicは「公開された」という意味ですが、これはとりあえず「つけとけ」と思って下さい)
ここでは、「Test」という名前のクラスを作っています。そこで、「class Test」と書いてあるのです。そして、そこから先に、クラスのプログラムが続いているわけです。
Javaでは、それぞれのクラスやプログラムは、{}という記号で区切って書きます。ですから、
public class Test { ……ここにクラスのプログラムがある…… }こんな形になっているわけです。この{から}までの部分を「ブロック」と呼びます。Javaは、このブロックにいろんなものを記述してプログラムを作っていきます。
Javaでは、クラスの名前とファイル名は同じものでなければいけない、というルールがあります。必ず「《クラス名》.java」というファイル名にしておかないといけないのです。これは絶対に間違えないでください。
というわけで、これでクラスの定義の仕方はわかりましたね?
では、その中身を見てみましょう。その中には、「public static void main (String args [])」という何だか難かしげなことが書かれていますね。
この部分の「public static void」というのは、いわば接頭語みたいなもんです。その次の「main」というのが、いわばサブルーチンの名前です。
Javaのプログラムというのは、いくつものサブルーチンからなっています。サブルーチンというのは、プログラムのかたまりみたいなもので、Javaではサブルーチン単位でプログラムがまとまっていると考えて下さい。つまり、一つのクラスの中には、小さなサブルーチンがたくさん集まっているのです。つまり、
public class 《クラス名》{ 《サブルーチン1》{ ……サブルーチン1のプログラム…… } 《サブルーチン2》{ ……サブルーチン2のプログラム…… } }こんな形になっているんですね。
Javaではサブルーチンのことを「メソッド」といいます。ここでは、「main」というメソッドが書かれていました。つまり「mainというサブルーチン1つだけを持つTestというクラスを作っていた」というわけです。
メソッド(つまりサブルーチン)は、その名前ごとに役割が決まっています。こういう時にはこの名前のメソッドを呼び出す、という具合に、その役割に応じてJavaは対応するメソッドを呼び出すようにしてあるわけです。もちろん、自分でもメソッドは作れるんですが、Javaになれるまでは「用意されているメソッドを利用する」のが基本と考えておきましょう。
多数あるメソッドの中でも、このmainメソッドは、特別な働きをするものです。これが、クラスのいわばメインプログラムになるのです。クラスが実行されると、まずこのmainメソッドが自動的に動作します。このmainメソッドは、
public static void main (String args []) { ……メソッドの命令…… }このように書く、と丸暗記してください。一つ一つの単語にはもちろん意味はありますが、今は知る必要はありません。
さて、ようやくプログラムの中身にたどりつきました。このmainメソッドでは、こんな命令を実行しています。
System.out.println ("Hello.");これはどういう意味か、これだけではわかりませんね。では、これがどういう要素からなっているか、もっと細かく分解してみましょう。
System −−クラスの名前
out −−出力のための特別な機能が入った変数(?)
println () −−出力をする命令
"Hello." −−表示する文字列
ずいぶん複雑そうですが、整理するなら、Javaの命令はこんなふうになっているのです。
《クラス名》.《メソッド名》(《パラメータ》);
−−え、「printlnはその前に2つも単語があるじゃないか?」ですって? そうなんですが、まあ基本はこういう形だと思ってください。このprintlnという命令は、実は2つのものが組み合わせられているんです。ですから、ひとまずprintlnのことは脇において考えてください。
今書いているプログラムを見ればわかるように、Javaのプログラムはクラスがあって、その中にメソッドがいっぱい並んでいる、という形をしていますね。Javaに用意されている命令も、実は同じ形をしているんです。つまりJavaでは、クラスに用意されているたくさんのメソッドを組み合わせてプログラムを書いているのです。
このメソッドを呼び出すときには、その命令がどのパッケージにあるものかをきちんと指定しないといけません。そこでこのように、最初にクラス名を、その次にメソッド名を書いてあるわけです。
Javaに用意されているクラスの名前には、最初の1文字目だけが大文字で、あとが小文字というルールがあります。中にはそうでないものもありますが、大体はこのルールにそって名前がつけられていると考えて下さい。一方、メソッドは小文字から始まる名前を付けておくのがルールです。
さて、メソッドの中には、一緒にいろんなデータを必要とするものがあります。例えばここで使った「println」というメソッドは、表示する文字列を一緒にわたしてあげないといけません。こうした、メソッドを呼び出すのに必要な情報がある場合には、パラメータとしてそのあとに続けます。パラメータは、
Abc.xyz (); Abc.xyz (A); Abc.xyz (A,B,…);こんな具合に書きます。2つ以上あるときはカンマで区切る分けですね。それから、パラメータが何もないときも、必ず()は付けなければいけません。
それから、Javaではそれぞれの命令の終わりには必ず「;」(セミコロン)記号を付けないといけません。これは「この命令はここで終わりです」という記号だと考えてください。これがないと、Javaはどこまでが命令かわからなくなるのです。
さて、命令の基本形はわかりましたね。−−そこで、脇においておいたprintlnに戻ります。これは、2つのものが組み合わせられている、といいましたね。つまり、
System.《変数》 《変数にクラスみたいのが入ってる》.《メソッド》 ↓ System.《変数なんだけどクラスみたいのが入ってる》.《メソッド》こんなふうになってたのだ、と考えてください。ちょっとわかりにくいので、今はまだこういう書き方は理解する必要はありません。「テキストを表示するときは、System.out.println ()というのを使うのだ」と丸暗記してしまいましょう。
以上をまとめるなら、Javaのプログラムは次のように書く、ということになります。
★ファイル名: 《クラス名》.java public class 《クラス名》 { public static void main (String args []) { ……ここにプログラムを書く…… } }細かな単語の意味は、いずれ説明しますので、今は詳しい意味など考えず、この基本形をそのまま丸暗記してください。