ソースコード源文件
|
---|
実行結果
|
readLineは、標準入力から文字列を取得するメソッドです。「a」という文字列が入力されら、"a" が、「12345」という文字列が入力されたら、"12345" が、戻り値になります。文字列はいつも String 型のオブジェクト(インスタンス)として返されます(だから変数 line は String 型になっています。)
readLine というメソッドは、入力の終わりに達したときは特殊なオブジェクトnull(ナル、ヌル)を返します。これは、Java のクラス java.io.BufferedReader の仕様として定められています。
条件式は、line != null 即ち、「line が null オブジェクトと等しくない」となっています。line が null に等しくななくなるのは入力の終わりに達したときですから、結局この while 文は、「入力の終わりに達するまで繰り返す」という処理になります。
ソースコード源文件
|
---|
さっきと同じ動作をします。けれども、while 文の書き方が少し変わっています。
ソースコード源文件
|
---|
実行結果
|
while 文中に登場する、「String s = line.toLowerCase();」がポイントです。toLowerCase というのは java.lang.String クラスのメソッドで、「文字列中の大文字をすべて小文字に変化した、新しい文字列を作る」という動作をします。大文字以外の文字は何も変換しません。
lien.toLowerCase は、line を書き換えるのではなく、line をとにして新しい文字列を のだということをよく理解してください。
ちょっと一言:String クラスと StringBuffer クラス
String クラスは、書き換えることのできない文字列です。String クラスのどんなメソッドを使っても、文字列の内容を書き換えることはできません。内容を書き換えるクラスとしては、java.lang.StringBuffer というクラスがクラスライブラリに用意されています。
Stringオブジェクトの管理とガーベッジコレクションメモリがなくなったことがわかると、Java の仮想マシンは、使われていないオブジェクトを一生懸命かき集めて、自動的にメモりを空けてくれるのです。このときの「使われていないオブジェクト」(String オブジエクとに限りません)のことを「ガーペッジ(ゴミ)」と呼び、ガーペッジを集めてメモリを空ける処理のことをガーペッジコレクション(ゴミ集め)と呼びます。 文字列の検索
変数 linenum は、これから調べて行く標準入力の行番号です。readLine メソッドで1行読むたびに(つまり while 文の最後の方で)1ずつ増加しています。 indexOf メソッドは、String クラスのメソッドで、そのメソッドのオブジェクト(ここでは line)が引数で指定した文字列を含んでいるかどうかを調べます。もしも含んでいたら、その文字列の位置を数値で返します(0以上)。もしも含んでいなかったら、-1 を返します。 例えば、line の値が "This is Japan." だとすると、line.indexOf("This")の値は0になります。これは、"This" か "This is Japan." の先頭に位置しているあらです。line.indexOf("Japan")の値は8になります。これは、"Japan" が "This is Japan."の先頭から8番目に位置しているからです。 でも、line.indexOf("America")の値は-1になります。"America"は、"This is Japan."に含まれていないからです。それでは、line.indexOf("is")の値は?2になります。"This is Japan." の中には2つの "is" が含まれていますが、indexOfは、このうち最初の方の位置を返します。後の方の位置を得たい場合には、java.lang.String.lastIndexOf というメソッドを使います。 ちょっと一言:多重定義(オーバーロード) java.lang.String クラスの indexOf メソッドは以下のように四つあります。
これらあ別のメソッドですが、類似の機能を持っているために同じ名前になっています。このように、複数のメソッドが同じ名前を使うことをメソッドの多重定義(オーバーロード)と呼びます。多重定期することで、プログラマが覚えなければならないメソッドの名前の数を減らすことができます。コンパイラは引数の型と個数によって、実際に使われているメソッドを職別します。引数の型と個数のことをメソッドのシグニチャと呼びます。 Chapter7 @ Java言語目録 @ HomeWork List @ 昭亮's Homepage |