平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【Java】String、StringBuilderクラスのreplaceメソッド違いがややこしい!

今回のテーマ

文字を置換するreplaceメソッドがStringクラスとStringBuilderクラスで
文法が違って引っかかってしまったので記事を残します。

記事対象者

Javaを学び始めた初学者
・1Z0-815の資格取得を目指している方

replaceメソッドの文法について

まずは文法についてはStringクラス、StringBuilderクラスともに
以下の通りです。
比較のため、Stringクラスも記載しました。
StringBuilderクラスは引数を3つ設定しないといけないことがわかります。

1.Stringクラス

置換する文字列.replace("置換する文字(列)","置換後の文字(列)");
// 文字列

2.StringBuilderクラス

置換する文字列.replace("置換開始位置","置換終了位置",置換後の文字(列)");

サンプルコード

次に簡単なサンプルコードを書いて動かしてみる。
下記例だと0番目から1番目の文字をqに変更するというものです。
ややこしいですが"置換終了位置"は-1の位置までになるのでここでは0
つまり最初のaを置換することになります。(この理解ができなかった・・)

ちなみに置換終了位置を2にするとbも含まれるのでabがqに置換される。

StringBuilder sb =new StringBuilder("abcd");
sb.replace(0,1,"q");
System.out.println(sb);
// 出力
qbcd


StringBuilder sb =new StringBuilder("abcd");
sb.replace(0,2,"q");
System.out.println(sb);
// 出力
qcd

まとめ

クラスによってメソッドの文法が違うものが
Javaでは他にもあるとのことです。

試験的にはしっかり覚えておくことが重要ですが 最低限エラーが出たときに気づけるレベルで頭の片隅に置いておきたいです

参考サイト

文字列を置換!Javaでreplaceを使う方法【初心者向け】 | TechAcademyマガジン

学習文献

オラクル認定資格教科書 Javaプログラマ Silver SE11(試験番号1Z0-815)

オラクル認定資格教科書 Javaプログラマ Silver SE11(試験番号1Z0-815)

  • 作者:山本 道子
  • 発売日: 2019/11/18
  • メディア: 単行本(ソフトカバー)