2013-03-24
java.lang.String#charAt()
概要
指定されたインデックス位置にある char 値を返す。
定義
インターフェース「CharSequence」内の charAt
パラメータ
index - char 値のインデックス
戻り値
文字列内の指定されたインデックス位置にある char 値
ソースコード
public char charAt(int index) {
// (1)
if ((index < 0) || (index >= count)) {
// (2)
throw new StringIndexOutOfBoundsException(index);
}
// (3)
return value[index + offset];
}
解説メモ (※ java の学習としてソースコードを読んでいるため、ここに書かれている解釈は間違っている箇所が多々あると思われます。)
- (1) パラメータのインデックスが、0以上かつレシーバの文字列オブジェクトの文字数を超えていないことをチェックする。超えていた場合、StringIndexOutOfBoundsException 例外がスローされる。
- (2) if 文で true が返された場合、StringIndexOutOfBoundsException がスローされる。 この例外クラスは、IndexOutOfBoundsException クラスのサブクラスにあたる。 String メソッドによりスローされ、インデックスが負または文字列のサイズよりも大きいことを示す。 charAt()メソッドではインデックスの指定範囲は「0 〜 length() -1」であるため、文字列と同じサイズのインデックス値が投げられた場合にもこの例外がスローされる。
- (3) value は String クラスのインスタンスフィールド。 96行目に「private final char value[]」という記述が見つかる。 これは、例えば String s = “hoge”; のように宣言された変数があった場合に、 Char[]value = {“h”, “o”, “g”, “e”} のように文字を格納する char 型の配列である。よって、この配列に指定された添字をつけて、return して終了。 ※offset の役割がまだよくわかっていない。