Javaに関する様々な情報をご紹介します。

4StringBufferの概要、コンストラクタ

Javaに関する様々な情報をご紹介します。

StringBufferの概要、コンストラクタ

このページでは文字データを扱うクラスのうち、StringBufferクラスについて説明を行います。

概要

StringBufferクラスではStringクラスと異なり一度オブジェクトの値を代入した後でもその値の変更が可能です。但し、値が不変な Stringクラスと比較すると値が同一の場合でもメモリ内に格納されている値の共有ができないなどあまり効率がよくありません。また初期容量を指定せず StringBufferオブジェクトを生成した場合は値の変更を見越して代入された値に16文字を加えた値がメモリ領域に確保されてしまいます。そのため値の変更がないのであればStringBufferクラスを使用すべきではありません。

StringBufferオブジェクトの生成

StringBuffer aaa = new StringBuffer("Road of Java");

オブジェクトaaaに割り当てられるメモリ領域

StringBufferのメモリ領域

値の変更が頻繁に行われる場合にStringBufferクラスを使用します。Stringクラスは値が変更された場合、変更された値を新しいメモリ領域に割り当てます。StringBufferクラスは値が変更された場合、初期生成時のメモリ領域を使用するため、効率がよくなります。

Stringクラスの動作

Stringクラスの動作

StringBufferクラスの動作

StringBufferクラスの動作

コンストラクタ

コンストラクタ 説明
StringBuffer( ) メモリ割り当て領域が16文字である空の文字列バッファを生成します。
StringBuffer(int) 指定された文字数のメモリ割り当て領域を持つ空の文字列バッファを生成します。
StringBuffer(String) 指定されたStringで初期化された文字列バッファを生成します。メモリ割り当て領域は指定されたStringの長さに16文字を加えた領域になります。

【例1】オブジェクトの初期容量を指定してStringBufferオブジェクトの生成を行います。

public class ExStringBuffer {
    public static void main(String[] args) {
        StringBuffer aaa = new StringBuffer(12);   //(1)
        aaa.append("Road of Java");   //(2)
        System.out.println("オブジェクトaaaは" + aaa + "です。"); //(3)
    }
}

解説1

  1. (1)StringBufferオブジェクトaaaをメモリ割り当て領域を指定して生成します。
  2. (2)StringBufferクラスで用意されているメソッドappendを使用してオブジェクトaaaに文字列を代入します。
  3. (3)printlnメソッドでオブジェクトの値を表示します。

実行結果1

D:\JAVA>javac ExStringBuffer.java

D:\JAVA>java ExStringBuffer
オブジェクトaaaはRoad of Javaです。

D:\JAVA>

4StringBufferの概要、コンストラクタ