public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Java");
String text = sb.append("17").substring(2, 5);
System.out.println(sb + ":" + text);
}
}
選択肢
- あなたの回答
- 正解
正解
A. Java17:va1
詳細解説
append は同じ StringBuilder オブジェクトを変更して返します。その後、substring(2, 5) は現在の内容 Java17 の 2 文字目以上 5 文字目未満を取り出すため va1 になります。
なぜ他の選択肢が違うのか
- StringBuilder は可変なので sb の内容は Java のままではありません。
- substring の終了位置は含まれないため va17 にはなりません。
- StringBuilder に substring メソッドはあるためコンパイルできます。
罠ポイント
String は不変、StringBuilder は可変です。さらに substring の第2引数は含まれない、という2つのポイントが重なっています。