【Java】StringBuilderのappendは値を自動追加します

こんにちは、エンジニアの@オノデラユウトです。

Javaの文字列追加でよく使うクラスがStringBuilderのappendです。

JavaのAPIではけっこう頻繁に使うクラス.メソッドなので、覚えた方がいいやつです。

Javaコードのどこかにたぶんappend使っていると思いますよ。

Java開発でSQL分を生成するときは可読性を上げるためにSQL文を区切ったりします。そしてその区切ったSQLを結合するのがappendです。(都度オブジェクトを生成しないString Bufferを使うことの方が多いかもしれないです。)
appendは文字列を最後に追加していくメソッドです。対象はプリミティブ型、Char配列型、String型、参照型です。プリミティブ型はStringだろうが、intだろうが、shortだろうが、すべて文字列として追加されます。なので、String型の文字列が入っているインスタンスにint型の値を追加することもできます。使い方は大きく分けて2つ。append(x)とappend(x,y,z)です。

【StringBuilderクラス】append(x)メソッドで追加

append(x)は追加したい対象がxです。

xは文字列や整数などの値も対象ですが、変数も対象となります。append(x)の場合はxすべてを追加します。まぁこっちの方が可読性は高いです。

文字列をappend

文字列をappendします。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで”あいうえお”を追加します。
次に”かきくけこ”を追加します。appendは自動的に文字列の最後に追加するので、最後のSystem.out.println(sb); では、”あいうえおかきくけこ”と表示されます。

String型変数をappend

String型の変数をappendします。appendは変数に入った値も追加できます。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで”あいうえお”を追加します。
次にString型変数kagyouに”かきくけこ”を代入します。そして、sbに変数kagyouを追加します。変数に代入された”かきくけこ”がappendされます。appendは自動的に文字列の最後に追加するので、最後のSystem.out.println(sb); では、”あいうえおかきくけこ”と表示されます。

数値をappend

数値をappendします。

まずappendで123を追加します。ダブルクォーテーションで囲っていないので、これは数値です。
次に456を追加します。同じく数値です。123に456を追加しているので、最後のSystem.out.println(sb);では、123456と表示されます。

int型をappend

int型の変数をappendします。代表的に整数の代表int型を使っていますが、shortとかdoubleとかでも使えます。appendは変数に入った数値も追加できます。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで”あいうえお”を追加します。
次にString型変数kagyouに”かきくけこ”を代入します。そして、sbに変数kagyouを追加します。変数に代入された”かきくけこ”がappendされます。appendは自動的に文字列の最後に追加するので、最後のSystem.out.println(sb); では、”あいうえおかきくけこ”と表示されます。

【StringBuilderクラス】append(x,y,z)メソッドで追加

append(x,y,z)は追加したい対象がxです。これはappend(x)と変わりません。
しかし、append(x,y,z)の場合はxのどこからどこまでを追加するかを指定できます。どこからを表すのがyでどこまでを表すのがzです。yとzには数値を入れます。
このappend(x,y,z)メソッドはint型が使えません。試していませんが、たぶんshort型とかも。コンパイルエラーになるので要注意です。
Stringだけ使えると思います。

範囲指定して文字列をappend

範囲指定して文字列をappendします。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで”あいうえお”を追加します。
次に文字列”佐藤さん”を追加対象としていますが、範囲は1から2までなので、”藤”が追加されます。
最後のSystem.out.println(sb); では、”あいうえお藤”と表示されます。追加は自動的に最後に追加されるのは変わりません。

範囲指定してString型変数をappend

範囲指定してString型の変数をappendします。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで”あいうえお”を追加します。
次にString型変数myojiに”佐藤さん”を代入します。
append(x,y,z)では変数myojiに入っている文字列の1から2までの値、つまり”藤”がsbの最後に自動的に追加されます。
なので、最後のSystem.out.println(sb);では、”あいうえお藤”と表示されます。

【コンパイルエラー発生!】範囲指定して数値をappend

範囲指定して数値をappendします。

インスタンス名sbのStringBuilderクラスを生成します。生成時点でsbには何も入っていません。
まずappendで数値の123を追加します。
次に数値456を追加対象としていますが、範囲は0から1までなので、4が追加されそうなのですが、append(x,y,z)では数値が使えません。
なので、Sytem.out.println(sb);も表示できません。理由は単純に文字列しか扱わないからだと思います。なので、以下のようにint型の変数であっても同様にコンパイルエラーになります。

もしかしたらInteger型にすればコンパイル通るかもしれませんが、試していませんので良ければ試してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です