StringBuilder の比較
出力はどれか。
public class Main {
public static void main(String[] args) {
StringBuilder x = new StringBuilder("same");
StringBuilder y = new StringBuilder("same");
System.out.println(x.equals(y) + " " + x.toString().equals(y.toString()));
}
}
- A
false true - B
true true - C
false false - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: StringBuilder は equals をオーバーライドしていないので false、toString して String の equals で比べると true です。
- B: StringBuilder の equals は参照の比較なので、中身が同じでも別のオブジェクトなら false です。
- C: toString() で String にしてから比べると、中身が比べられて true になります。
- D: StringBuilder にも equals メソッド (Object のもの) があるのでコンパイルできます。
ポイント
- StringBuilder は equals をオーバーライドしていないので、中身が同じでも別のオブジェクトなら false です。
- 中身を比べるには、
toString()で String にしてから equals を使います。
「文字列の作成と操作 (テキスト・ブロックを含む)」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)