Java入門 第9回 さまざまなクラス

クラスライブラリ
これまでクラスやメソッドを作成してきましたが、Javaにはあらかじめ便利なクラスやメソッドが用意されています。
会員管理プログラムで今までは値をソースの中に書いていましたが、キーボードから入力を受け付けるようにしてみましょう。
import java.io.*;
class KeyIO{
	String keyboardIn() throws IOException{
		BufferedReader br =
		 new BufferedReader(new InputStreamReader(System.in));
		System.out.println("文字を入力してください。");
		String str = br.readLine();
		System.out.println(str + "が入力されました。");
		
		return str;
	}
}			
一気に難しくなったように見えますが順番に見ていけば大丈夫です。
一行目、
import java.io.*;
とあります。
これはインポート文と呼ばれる文で、ここでは入出力に関係するパッケージ(java.io.の以下すべてのパッケージ)を読み込んでいます。パッケージとはJavaでよく使うクラスを種類ごとにまとめたものです。
2行目はクラス宣言、3行目メソッド宣言の後、
throws IOException
とあります。
これはこのメソッドが例外IOExceptionを送出(throw)する可能性があることを宣言しています。
つまり、このメソッドはIOExceptionという例外が発生することがありますよ、と宣言しているのです。
例外処理については次回で詳しく解説します。

4,5行目、BufferedReaderクラスの変数brを宣言し、new InputStreamReaderをくるんで(ラップして)インスタンスしています。
InputStreamReaderが呼び出しごとにバイトを読み込み、文字型に変換し、そのたびに復帰するのに対し、BufferedReaderはバッファリングして読み込みますのでBufferedReaderでラップすると効率がよくなります。
System.inというのは標準入力(キーボード入力)をさしています。
System.outが標準出力(ディスプレイへの出力)でしたね。
7行目、
String str = br.readLine();
で、文字列型の変数strにStringBufferedクラスのメソッドであるreadLine()の戻り値を受け渡しています。
readLine()は一行の文字列を読み込むメソッドで、戻り値として読み込んだ一行をStringとして返します。
ここではキーボードから入力された一行(エンターキーが押されるまで)を返します。

・クラスライブラリ
KeyIOクラスはそれ自体がクラスですが、その中でもさまざまなクラスを呼び出しています。
IOException
BufferedReader
InputStreamReader
System
String
などがJavaであらかじめ用意されたクラスです。これらクラスの集まりをクラスライブラリと呼びます。
クラスライブラリを利用することで、「キーボードから値(文字列)を入力し、画面に出力する」というプログラムがたった5行で済むのです。

▲ページの先頭へ戻る


・さまざまなクラス

もうおなじみのStringにも便利なクラスライブラリがたくさん用意されています。
先ほどのキーボードから入力するクラスを使って、実際にどんなクラスがあるのか確かめてみましょう。

先ほどのキーボード入力クラスに以下を追記しました。
class Sample11{
	public static void main(String args[]) throws IOException{
		KeyIO key;
		key = new KeyIO();
		String s;
		s = key.keyboardIn();
		String t;
		t = key.keyboardIn();
		System.out.println("s.length()の実行結果"+ s.length());
		System.out.println("s.indexOf(t)の実行結果" + s.indexOf(t));
		System.out.println("s.equals(t)の実行結果" + s.equals(t));
	}
}
			
println()メソッドの中でそれぞれlength(),indexOf(),equals()というメソッドが呼び出されています。
結果は以下のようになります。
入力する二つの文字列によって結果が変わってきますのでいろいろ試してみてください。
・実行結果
C:\kikuchi\JavaRensyu>java Sample11
文字を入力してください。
mojimoji
mojimoji が入力されました。
文字を入力してください。
moji
moji が入力されました。
s.length()の実行結果8
s.indexOf(t)の実行結果0
s.equals(t)の実行結果false

C:\kikuchi\JavaRensyu>
			
length()メソッドは文字数をカウントして返します。
この場合s = ”mojimoji”ですから8と表示されているわけですね。
indexOf()メソッドは引数の文字列を検索して最初に出現する位置を返します。
文字列mojimojiに対し引数がmojiですから1番目ですね。
ただし実際には最初の文字は0番目とカウントされますので表示されるのは"0"になります。
実際に使うときには+1して使うと便利なメソッドです。
equals()メソッドは引数の文字列と元の文字列を比較し、同じならtrue、違うときはfalseを返します。
indexOf()やequals()をうまく使うと文字列の検索や比較が簡単にできます。
興味のある方はJavaAPIリファレンスや本などで調べてみてください。

いかがでしたでしょうか。
次回はファイルの入出力と例外処理について解説します。

▲ページの先頭へ戻る