文字列の扱いについて.
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
引数によって関数 function() の挙動を替えることが,オーバ・ロードです.a.function(b)
先のプログラムで,こういう例を示しました.
この2つの println() メソッドの引数は,それぞれ何でしょう? 答えは,「String クラス」と「int」です. String クラスを引数にした println() メソッドはそのまま出力ができますが, int を引数にした println() メソッドではそうもいきません. このことを解決するために,オーバ・ロードが用いられています. int を String に変換する処理を加えた,別の println() メソッドが存在するのです.System.out.println("abc"); System.out.println("abc".length());
Sample2
public void println(String str) {
出力処理
}
public void println(int i) {
println(Integer.toString(i));
}
|
たとえるなら,このような実装なのでしょうか.わかりますか?