|
||||
|
|
Javaコアパッケージ [StringBufferクラス]
|
|
|
StringBufferクラス
StringBufferクラスクラスは可変の文字列を扱うことが出来ます。文字列の操作というとStringクラスを思い出すかと思いますが、大きな違いは Stringクラスが固定の文字列を扱うクラスであったのに対し、StringBufferクラスはメソッドによって、長さと内容を変更することが出来ます。
Stringクラスは前述したように文字列を定数として扱います。そのため、+ 演算子による連結では内部的にこの StringBufferを呼び出しています。 そのような事から、連結等を頻繁に行うような場合は StringBufferを使用するようにします。 StringBufferクラス「sbfSample」を宣言とともに初期化してみます。
StringBuffer sbfSample = new StringBuffer("可変長の文字列を扱います。"); System.out.println(sbfSample.toString()); [ 表示 ]
可変長の文字列を扱います。 StringBufferクラスのコンストラクタ
StringBufferは以下のようなコンストラクタがあります。
引数で渡した文字列を保持する可変長文字列バッファを作成します。また、あらかじめバッファサイズが確保されます。
StringBuffer(String str)
以下では文字列を格納せず、16 文字である文字列バッファを作成します。
StringBuffer()
以下では文字列は格納しませんが、引数で渡された length分の文字列バッファを作成します。
StringBuffer(int length)
StringBufferクラスの主なメソッド
append
public StringBuffer append(param)
[ Sample1 ]
boolean bln = false; StringBuffer sb = new StringBuffer("This value is "); sb.append(bln); System.out.println(sb.toString()); //This value is falseを表示 [ Sample2 ]
StringBuffer sb1 = new StringBuffer("Sample"); StringBuffer sb2 = null; System.out.println(sb1.append(sb2).toString()); // Samplenullを表示 上記では append(sb2).toString() と指定しています。これは appendメソッドが処理後のオブジェクトへの参照を返しているため、appendメソッドの実行後、toString() メソッドを実行したのと同等の処理となります。 capacity
public int capacity()
文字列バッファの現在の容量を返します。この容量は、新しく挿入される文字で利用可能な記憶域のサイズを表しています。ただし容量が足りなくなった場合でも、StringBufferではバッファ領域の割り当てをプログラマが意識することなく自動的に行ってくれます。 [ Sample ]
StringBuffer sb1 = new StringBuffer(); StringBuffer sb2 = new StringBuffer("渋谷"); System.out.println(sb1.capacity()); System.out.println(sb2.capacity()); insert
public StringBuffer insert(int offset, pramam)
paramで指定した文字列表現が、この文字列バッファの指定されたオフセット位置へ挿入されます。その位置にあった文字は挿入された文字列の後ろに移動され、引数の長さの分だけこの文字列バッファの長さが増加します。 引数が int、char、long といった基本データ型だった場合、String.valueOf メソッドによって変換される場合と同じように文字列に変換され、その文字列がこの文字列バッファに挿入されます。 また引数で指定した paramが nullだった場合、"null" という文字列が挿入されます。 また、指定した offsetが無効な場合は StringIndexOutOfBoundsException がスローされます。 [ Sample ]
StringBuffer sb = new StringBuffer("目黒、渋谷"); sb.insert(3,"恵比寿、"); System.out.println(sb.toString()); // 目黒、恵比寿、渋谷を表示 length
public int length()
文字列の文字数を返す。半角文字も全角文字も同じ1文字として扱われます。また、このメソッドで返す値はバッファ領域を含まない値になります。 [ Sample ]
StringBuffer sb = new StringBuffer("あいうえお12345"); System.out.println(sb.length()); // 「10」を表示 tostring
public String toString()
toString() メソッドはこの文字列バッファに含まれる文字列表現を、新しい Stringオブジェクトに割り当てて、そのオブジェクトへの参照を返します。 簡単に言ってしまえば、StringBuffer の内容を Stringへ変換した値を返します。 [ Sample ]
sb.append("東京都"); sb.append("渋谷区"); sb.append("恵比寿"); sb.append("1丁目"); System.out.println(sb.toString()); // 「東京都渋谷区恵比寿1丁目」を表示 StringBufferクラスの使い方
Stringクラスは文字列を定数として扱うため、+演算子による連結では内部的に StringBufferを使用していることは前述しました。そのため、文字列の連結等が頻繁に発生する場合は StringBuffer クラスを使用して、 toStringメソッドで最後に文字列へ変換するといったやり方が良く使われます。
public String getSqlParameter() { return new StringBuffer(" ") .append(this.getTableInfo()) .append(this.getColumInfo()) .append(this.getWhereInfo()) .append(this.getOrderInfo()) .append(this.getExtraInfo()) .toString(); } 上記は SQLを生成するメソッドですが、StringBufferを生成して appendメソッドで文字を連結、最後に toStringメソッドで Stringオブジェクトへ変換しています。 |
|||||||||||||||||||||||||||||||||||||||