% javac sample1.java % java HelloWorld Hello World.
オブジェクトの操作は,そのオブジェクトが属するクラスで定義されているメソッ ドを呼び出すことによって行なう. sample1.java中の
System.out.println("Hello World");において,System.outは標準出力を表すオブジェクトであり, printlnはそのオブジェクトに文字列を一行出力するメソッドである.
同様に,sample2.java,sample3.javaをコンパイルして実行せよ. sample2.javaのPrintFileは,標準入力からファイル名を受け取って, そのファイルの内容を表示する.
% javac sample2.java % java PrintFile sample2.java (←適当なファイル名を入力) ...sample2.javaの内容が表示される...
% javac sample3.java % java FindFromFile a s sample3.java (←適当なファイル名を入力) as atic void main(String[] args args ame = new BufferedReader(new InputStreamReader(Sys attern pat = Pattern.compile(args args
このサンプルでは,検索を行単位で行なっているため,行をまたがる(改行を含 む)文字列がマッチしても表示されない.例えば,一旦ファイルの内容を一つの 文字列として,その文字列を対象としたマッチングを行なえば,複数行にまたが る文字列も検索対象となる.
もう一つの例sample/java/sample4.javaを用いて,クラス,オブジェクト,メソッド についてごく簡単に説明する.このプログラムは,2つのクラス定義からなって いる.Switchクラスはon/offの2状態をもつスイッチ(またはフラグ) を表しており,ClassSampleクラスはこのスイッチを利用したプログラム 本体を想定している.実行例は以下のとおりである.
% javac sample4.java % java ClassSample false true
Switch() { flag = 0; }である.flagはクラス定義の始めに宣言されている局所変数のようなもの であるが,それぞれのオブジェクトごとに独自の値を持っている
次に,Switchクラスのメソッドを見てみよう.checkメソッドは引数 を取らず,内部状態の整数flagが表すon/offを真偽値として返している. すなわち,オブジェクトのflagが偶数ならばtrue,奇数ならばfalseを返すメソッドである.flipメソッドは,そのオブジェクト のon/offを切り替えるメソッドである.
これをふまえてmainメソッドに戻ると,s1は初期状態on(true)で作成された後,flipメソッドでoffに切り替わっている. 一方,Switchクラスの変数flagは,オブジェクト毎に独自の値を持 つので,s2は初期状態onのままである.
この例のSwitchクラスでは,スイッチの状態を整数の偶奇で表現して実装 しているが,これを利用するClassSample側ではスイッチの操作はコンスト ラクタと2つのメソッドを介してのみ行なえばよく,その実装の内容を意識する必 要がない.例えば,flagを(もっと素直に)boolean型の変数として 実装した別のSwitchクラスに差し替えたとしても,ClassSampleを変 更する必要はない.
実験ではJavaの基本についてこれ以上詳しい解説は行なわないので,教科書「す
べての人のためのJava プログラミング(第二版)」(立木秀樹,有賀妙子)
を
読んで各自勉強すること.読むべき箇所を以下に挙げる.なお,C言語の理解が十
分でない者には4章全てと5.2も読むことを勧める.
以下に参考となるウェブサイトを挙げる.
NAKAZAWA Koji