| English | 意味 |
|---|---|
| immutable/ɪˈmjuːtəbl/ | 不変 |
ストリングとインデックス
Stringは文字の並びであり、0から番号が振られています。"HELLO"において、インデックス0は'H'、インデックス1は'E'、…、インデックス4は'O'です。s.length()は文字の個数を返します;最後のインデックスはlength() - 1です。- これにおけるOff-by-oneエラーが、最も一般的なストリングのバグです。
サブストリング
s.substring(start, end)はインデックスstartからの文字を返しますが、endは含みません。"HELLO".substring(1, 3)→"EL"(インデックス1と2で、3は含まれない)。s.substring(start)(引数が1つ)はstartから末尾まで進みます。- 結果の長さは
end - startです。
indexOf と equals
s.indexOf("lo")はテキストが出現する最初のインデックスを返し、見当たらない場合は-1を返します。s.equals(t)は二つのストリングが 同じ文字列 であるかをテストし、booleanを返します。- ストリングの内容を比較するには、
.equals()を使用し、==を絶対に使わないでください。 ==は 参照 (アドレス)を比較しており、文字自体ではありません。
ストリングは不変性を持つ
- ストリングは 不変性(イミュータブル) を持ちます:一度作成されると、その文字を 決して 変更することはできません。
substringやtoUpperCaseといったメソッドは 新しいストリングを返す だけであり、元のストリングを編集することはありません。s.toUpperCase();だけでは目に見える変化がなく、結果を格納する必要があります:s = s.toUpperCase();- ストリングメソッドが常に新しい値を返すのは、この不変性のためです。
文字列の中身は .equals() で比較し、== を決して使わない。 == は二つの参照が 同じオブジェクト を指しているか、すなわち文字が一致しているかをテストするものではない——したがって a == b は false となる可能性があるが、両方が "cat" であってもそうである。また、文字列は 不変(immutable) である:s.toUpperCase() は新しい文字列を返して s は変更しない。ただし s = s.toUpperCase(); に再代入すれば例外である。
"HELLO" を扱う:
"HELLO".length()→5;インデックス0は'H'、インデックス4は'O'です。"HELLO".substring(1, 4)→"ELL"(インデックス1, 2, 3)。"HELLO".indexOf("L")→2(最初のL);.equals("hello")→false(大文字小文字が異なります)。
A String は 0 からインデックスが振られます(最後は length()-1 )。substring(start, end) はインデックス start から end-1 を返します;indexOf は位置を探します(または -1 )。内容の比較には .equals() を使い、== を使わないでください。ストリングは 不変性 を持ちます — メソッドは 新しい ストリングを返すので、変更を維持するには再代入してください。
HELLO のインデックス付け(0 から始まる)
substring(1, 4) はインデックス 1, 2, 3 を取得する → ELL。
文字列 "HELLO" において、インデックス 0 の文字は何か?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
文字列はインデックス 0 から始まるため、インデックス 0 は 'H' である。
"HELLO".substring(1, 3) は何を返すか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
インデックス 1 と 2(3 を含まず)→ EL。
2つの文字列が同じ文字列であるかを比較するには、___ を使用するべきである。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
.equals() は内容会比较;== は参照を比較する。
s.toUpperCase(); だけでは文字列 s をその場で変更しない。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
文字列は不変である — s = s.toUpperCase(); と再代入する必要がある。
"HELLO".indexOf("L") は何を返すか(最初の L)?
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
最初の 'L' はインデックス 2 にある。