講義編3
「文字列の扱い」
 
← 前  :  次 →

文字列の扱いについて.

C 言語では char の配列が文字列ですが,Java では文字列を表すためのクラスとして String クラスが定義されています.

すでに println() メソッドで "ダブル・クォーテーションで囲まれた文字列" は 扱ってきました.この文字列リテラルは,char[] ではなく String クラスの オブジェクトとなります.

※必須参照:API ドキュメントの「java.lang.String」クラス

String クラスは様々な,有用かつ効果的なメソッドが用意されています. たとえば,表現された文字列(自分自身)の長さを知る length() メソッドなどです. なお,配列の要素数を知るのは「length」です.これはメソッドではありません!

Sample

public class foo {
	public static void main(String[] args) {
		System.out.println("abc");
		System.out.println("abc".length());
	}
}

上記で示したプログラムが,どんな出力をするかわかりますか? 答えは,「abc」と「3」が(改行付きで)標準出力ストリームに出力されます. このように,直値であっても String オブジェクトであることには変わらず, そのメソッドを使用することが可能です.

String クラスは当然ながら,参照型です. ですが,基本型と同じくらい重要で基本的な要素です. int や double,boolean などのように,普段から自在に扱えるようになってください.

 

ところで,C++ では認められている演算子のオーバ・ロードですが, Java では複雑化を避けるため(?)に認められていません. ただし,例外的に「+」だけは特殊演算が可能となっています.
例)

"variableX = "+variableX
 →「variableX = 」という文字列の最後尾に「variableX」の値を付加.
といった使い方は,すでにお馴染みのものです. このように「+」オペレータの評価対象となるオペランドのいずれかに文字列が あった場合,その結果は順序関係をそのままに結合した文字列として返ります.

「オーバ・ロード」という単語については,前回「知っておきたい,Java の用語」で 書き忘れてしまいましたが・・・.とても重要なキー・ワードです. 「オーバ・ライド」と一緒に知っておきたい&キッチリ区別しておきたい単語なので, 自分で調べてみてください.

極論で言うならば.

	a + b
上記の式は,こう言い換えられます.
	a.function(b)
引数によって関数 function() の挙動を替えることが,オーバ・ロードです.

先のプログラムで,こういう例を示しました.

	System.out.println("abc");
	System.out.println("abc".length());
この2つの println() メソッドの引数は,それぞれ何でしょう? 答えは,「String クラス」と「int」です. String クラスを引数にした println() メソッドはそのまま出力ができますが, int を引数にした println() メソッドではそうもいきません. このことを解決するために,オーバ・ロードが用いられています. int を String に変換する処理を加えた,別の println() メソッドが存在するのです.

Sample2

public void println(String str) {
	出力処理
}

public void println(int i) {
	println(Integer.toString(i));
}

たとえるなら,このような実装なのでしょうか.わかりますか?


表紙へ戻る