👩🏼‍🏫

【Java】StringBuilderクラスのメソッド

2022/02/03に公開

はじめに

Java Silverの受験にあたって、勉強したことをまとめました。
Stringクラスのメソッドに関する記事はこちら↓
https://zenn.dev/miya_akari/articles/3c6d1e1a2f309a

StringBuilderクラスとは

  • 文字列を扱うクラス
  • Stringクラスと違い、変数に格納した文字列を変更できる
    (Stringクラスは変更するたびに新しいインスタンスが生成されていた!)
  • はじめから 16文字分のメモリ領域(バッファ) を持つ
    どういうことかというと…
StringBuilder sb = new StringBuilder("abc");
System.out.println(sb.capacity()); // 19

// capacity()は現在の容量を戻すメソッド
// はじめから持っている16文字+abcの3文字で、出力は[19]になる

StringBuilderとStringの違い

  • StringBuilder:可変(mutable)
    → インスタンス化のあとに内容を変更できる
  • String:不変(immutable)
    → インスタンス化のあとに内容を変更できない
     (ので、変更するたびに新しいインスタンスが生成されていた)

可変と不変は、以下の記事が分かりやすかったです。
https://www.zunouissiki.com/java-immutable-mmutable/

append(String str)

  • 引数で渡された文字列を、現在の文字列に追加する
StringBuilder sb = new StringBuilder("ab");
System.out.println(sb.append("cd")); // abcd

replace(int start, int end, String str)

  • 第1引数から第2引数の1つ前の範囲の文字を、第3引数で指定した文字に置き換える
  • 文字列の先頭は0番目
StringBuilder sb = new StringBuilder("abcde");
System.out.println(sb.replace(1, 3, "A")); // aAde

// 1番目から2番目の文字[bc]が、[A]に置き換わるので、[aAde]になる

reverse()

  • 文字列の順番を逆にしたもので置き換える
StringBuilder sb = new StringBuilder("abc");
System.out.println(sb.reverse()); // cba

insert(int offset, String str)

  • 引数で指定された文字列を、引数で指定された文字の前に挿入する
  • 文字列の先頭は0番目
StringBuilder sb = new StringBuilder("abcde");
System.out.println(sb.insert(2, "AB")); // abABcde

delete(int start, int end)

  • 第1引数から第2引数の1つ前の範囲の文字を削除する
  • 文字列の先頭は0番目
StringBuilder sb = new StringBuilder("abcde");
System.out.println(sb.delete(0, 3)); // de

参考

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/StringBuilder.html

おまけ

日本オラクル株式会社のYouTubeが分かりやすかったです!
SE8で少し内容が古いですが、ポイントがギュッとまとまっていて分かりやすかった〜
これで全体を把握してから、黒本や紫本をやればよかったなあ🥲
https://youtu.be/2yx0b5y2c7s
https://youtu.be/I93RVjSY_vA

Discussion