読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

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の役割がまだよくわかっていない。