Javaで文字列を追加するにはいくつかの方法があるが、StringBuilderクラスを使うのも便利だ。
このページではStringBuilderクラスのappendメソッドを利用して、文字列を追加する方法をお伝えしよう。
目次
文字列を追加する(append)
文字列「おはよう」へ「ございます」という文字列を追加して「おはようございます」としたい場合、以下の複数の方法がある。
- Stringクラスを使用する。
- StringBufferクラスを使用する。
- StringBuilderクラスを使用する。
1のStringクラスを使用する場合は、プラス(+)演算子を使用して文字列を連結する。
ただし、Stringクラスの文字列は値を変更することができないので、連結した結果は新しい変数へ代入する必要がある。
2のStringBufferクラスと3のStringBuilderクラスはほぼ同じ機能を持つ。
どちらも新しいオブジェクトを新しく作ることなく、文字列の内容を変更することができる。
StringBuilderクラスはJava1.5で新しく追加されたクラスで、StringBufferよりも効率よく処理が行われるようになっている。
StringBuilderクラスを利用しての文字列追加処理
StringBuilderクラスを使った文字列の追加処理を見ていこう。
書き方の基本はこうなる。
対象文字列.append(追加対象 )
対象文字列の末尾へ追加対象が文字列として追加される。
追加対象として引数に指定できる値にはboolean型・char型・char型の配列・double型・float型・int型・long型・String型・StringBuffer型・・と様々な種類が用意されている。
どの型が引数として設定されても、文字列に変換して追加される。下記長く書いているが、お伝えしているのは同じ話だ。
サンプルコードまで飛んでいただいて構わない。
boolean型
append(boolean b)
戻り値の型 |
StringBuilder |
内容 |
boolean 引数の文字列表現を対象文字列に追加する。 引数は、文字列に変換され、その文字列の文字が対象文字列に追加される。 |
char型
append(char c)
戻り値の型 |
StringBuilder |
内容 |
char 引数の文字列表現を対象文字列に追加する。 引数は対象文字列に追加される。対象文字列の長さは 1 だけ増加する。 |
char型配列
append(char[] str)
戻り値の型 |
StringBuilder |
内容 |
char 配列引数の文字列表現を対象文字列に追加する。 配列引数の文字は、対象文字列の内容に順番に追加される。対象文字列の長さは引数の長さの分だけ増加する。 |
double型
append(double d)
戻り値の型 |
StringBuilder |
内容 |
double 引数の文字列表現を対象文字列に追加する。 引数は文字列に変換され、その文字列の文字が対象文字列に追加される。 |
float型
append(float f)
戻り値の型 |
StringBuilder |
内容 |
float 引数の文字列表現を対象文字列に追加する。 引数は文字列に変換され、その文字列の文字が対象文字列に追加される。 |
int型
append(int i)
戻り値の型 |
StringBuilder |
内容 |
int 引数の文字列表現を対象文字列に追加する。 引数は文字列に変換され、その文字列の文字が対象文字列に追加される。 |
long型
append(long lng)
戻り値の型 |
StringBuilder |
内容 |
long 引数の文字列表現を対象文字列に追加する。 引数は文字列に変換され、その文字列の文字が対象文字列に追加される。 |
String型
append(String str)
戻り値の型 |
StringBuilder |
内容 |
指定された文字列を対象文字列に追加する。 String 引数の文字が、順番に対象文字列に追加される。その結果、引数の長さの分だけ対象文字列の長さが増えます。str が null の場合、"null" の 4 文字が追加される。 |
StringBuffer型
append(StringBuffer sb)
戻り値の型 |
StringBuilder |
内容 |
指定された StringBuffer を対象文字列に追加する。 StringBuffer 引数の文字が、順番に対象文字列に追加される。その結果、引数の長さの分だけ対象文字列の長さが増えます。sb が null の場合、"null" の 4 文字が対象文字列に追加される。 |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
public class StringBuilderSample1 { public static void main(String[] args) { StringBuilder sb = new StringBuilder("おはよう"); sb.append("ございます。"); System.out.println("[1]:" + sb.toString()); //[1] boolean bool = true; sb.append(bool); System.out.println("[2]:" + sb.toString()); //[2] double dNum = 0.123454; sb.append(dNum); System.out.println("[3]:" + sb.toString()); //[3] char ch = '字'; sb.append(ch); System.out.println("[4]:" + sb.toString()); //[4] char[] cArray = {'配', '列'}; sb.append(cArray); System.out.println("[5]:" + sb.toString()); //[5] int num = 10; sb.append(num); System.out.println("[6]:" + sb.toString()); //[6] long lNum = 999999999; sb.append(lNum); System.out.println("[7]:" + sb.toString()); //[7] float fNum = 100; sb.append(fNum); System.out.println("[8]:" + sb.toString()); //[8] String str ="String"; sb.append(str); System.out.println("[9]:" + sb.toString()); //[9] StringBuffer sbf = new StringBuffer("StringBuffer"); sb.append(sbf); System.out.println("[10]:" + sb.toString()); //[10] String strNull= null; sb.append(strNull); System.out.println("[11]:" + sb.toString()); //[11] } } |
実行結果
1 2 3 4 5 6 7 8 9 10 11 |
[1]:おはようございます。 [2]:おはようございます。true [3]:おはようございます。true0.123454 [4]:おはようございます。true0.123454字 [5]:おはようございます。true0.123454字配列 [6]:おはようございます。true0.123454字配列10 [7]:おはようございます。true0.123454字配列10999999999 [8]:おはようございます。true0.123454字配列10999999999100.0 [9]:おはようございます。true0.123454字配列10999999999100.0String [10]:おはようございます。true0.123454字配列10999999999100.0StringStringBuffer [11]:おはようございます。true0.123454字配列10999999999100.0StringStringBuffernull |
サンプルコードの説明
簡単にサンプルコードの説明を行おう。
- [1] StringBuilder型の変数sbを「おはよう」で初期化し、appendメソッドを利用して文字列「ございます。」を追加。結果を表示する。
- [2] 変数sbにboolean型変数boolを追加し、結果を表示する。boolean値が文字列として追加されている。
- [3] 変数sbにdouble型変数dNumを追加し、結果を表示する。
- [4] 変数sbにchar型変数chを追加し、結果を表示する。
- [5] 変数sbにchar型配列の変数cArrayを追加し、結果を表示する。配列の要素を取り出して一つ一つ追加しなくても一度の操作で配列中の文字すべてを追加
- [6] 変数sbにint型変数numを追加し、結果を表示する。
- [7] 変数sbにlong型変数lNumを追加し、結果を表示する。
- [8] 変数sbにfloat型変数fNumを追加し、結果を表示する。
- [9] 変数sbにString型変数strを追加し、結果を表示する。
- [10] 変数sbにStringBuffer型変数sbfを追加し、結果を表示する。
- [11] 変数sbにString型変数strNullを値がnullのまま追加し、結果を表示する。
まとめ
このページではJavaで文字列を追加するStringBuilderクラスのappendメソッドについてご紹介した。
処理は早く、新しくオブジェクトを作ることもない。ぜひ積極的に使っていただければと思う。