簡単なプログラムで実際にコンパイルして実行してみます。これはアプレットではないのでブラウザでは動作しません。 |
class Test001 { public static void main (String argv[]) { System.out.println ("Hello Java!"); } } 画面に "Hello Java!" と出力するだけの非常に短いプログラムです。 1行目の class Test001 { は、プログラムに Test001 というクラス名を付けています。Java はオブジェクト指向のプログラミング言語ですから、プログラムは何らかのクラスに属するのです。以下、最後の行の } までがクラス Test001 になります。 クラスの中には、幾つかのメソッドが書かれます。メソッドはそのクラスで何が出来るのか機能ごとにまとめたものです。結局これがプログラム本体になります。 2行目では public で static な void な メソッド main を定義しています。これは、main に対しての決まり文句のようです。main はインタプリタから最初に呼び出されるメソッドで、文字列の配列 String argv[] を受け取ります(使っていないけど)。以下 4行目までが main です。3行目で "Hello Java!" を出力しています。 これを、エディタで打ち込みます。スペースの数とか行替えは気にする必要はないそうです。正しい所で区切られていればコンパイルできます。大切な事は、大文字と小文字の区別を付けて "Test001.java" というファイル名で保存する事です。(この章の最後に少し触れます) 間違っていました、適当な名前で保存して大丈夫です。ただし、同じ名前にするのが一般的です。(1999/2改正) 改正の追加です。クラスがpublicで指定されているときは、クラス名とファイル名は同じ名前でないとコンパイルでエラーが出ます。(1999/2追加) 出来たらコンパイルします。 C:\HIROSE>javac Test001.java[Enter] C:\HIROSE>あれ、何も出てきません。DIR をとってみましょう。Test001.class ファイルが出来ています。 正しくコンパイルされると何も出て来ないようです。これではつまらないので、いたずらで次の様に打ち込んでみます。 C:\HIROSE>javac Test001[Enter] javac: invalid argument: Test001 使い方: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-now rite][-deprecation][-d dir][-J<runtime flag>] file.java... C:\HIROSE>何か怒られてしまった様です。ファイル名には ".java" と付けなければいけないようです。ファイル名を Test001.src にして javac Test001.src でも同じエラーが出ました。Java のソース・ファイル名は xxxx.java で、コンパイルは javac xxxx.java としないといけないのです。 では、インタプリタで実行してみます。 C:\HIROSE>java Test001[Enter] Hello Java! C:\HIROSE>Hello Java! が実行結果です。うまく動いています。ここでもまた、ちょっといたずらしてみます。 C:\HIROSE>java Test001.class[Enter] Can't find class Test001/class C:\HIROSE>怒られてしまいました、インタプリタには .class を付けてはいけないようです。 インタプリタには.classを付けてはいけないのではなく、インタープリタに渡すのはクラス名なのです。インタプリタに渡すのがファイル名だと思っていたのでこんなテストをしたのです。(1999/2) 最後にもうひとつ、Test001.java を HelloJava.java で保存して、コンパイルして実行しました。 C:\HIROSE>javac HelloJava.java[Enter] C:\HIROSE>java HelloJava[Enter] Can't find class HelloJava C:\HIROSE>コンパイルはうまくいきましたが、インタプリタが HelloJava というクラスを探しにいってエラーを返しているようです。やっぱり、クラス名(Test001) とファイル名(Test001.java) は同じにする必要があるようです。 間違いです、クラス名とファイル名は違う名前で大丈夫です。インタープリタに渡すのをファイルだと思っていたので、java HelloJava[Enter]で実行してますが、インタープリタに渡すのはクラス名でした。HelloJavaクラスを探しに行ってエラーになるのは当然です。クラス名Test001で、java Test001[Enter]と実行すれば正しく動作します。(1999/2改正) 改正の追加です。クラスがpublicで指定されているときは、クラス名とファイル名は同じ名前でないとコンパイルでエラーが出ます。(1999/2追加) |