ホームページ >Java >&#&チュートリアル >JAVAのStringクラスとStringBufferクラスの違い

JAVAのStringクラスとStringBufferクラスの違い

高洛峰
高洛峰オリジナル
2017-01-21 16:31:321386ブラウズ

Java の文字列操作には、String クラスと StringBuffer クラス (バッファリングされた文字列処理クラス) の 2 種類があります。
この 2 つの違いについて簡単に説明しましょう。
String クラスと StringBuffer クラスはどちらも、文字列操作を実装するための対応するメソッドを提供しますが、少し異なります。

(1) String クラス
このクラスが文字列を生成すると、そのオブジェクトは不変になります。 String クラスの内容と長さは固定です。プログラムが文字列情報を取得する必要がある場合、システムが提供するさまざまな文字列操作メソッドを呼び出す必要があります。さまざまなシステム メソッドを通じて文字列に操作を適用できますが、これによってオブジェクト インスタンス自体は変更されず、新しいインスタンスが生成されます。システムは、オブジェクトに含まれる実際の文字数に基づいて、String クラス オブジェクトにメモリを割り当てます。

(2) StringBuffer クラス
Buffer という言葉を調べてみると、バッファリングの機能を持つクラスです。このクラスは可変文字列を処理します。 StringBuffer クラスの文字列を変更する場合は、新しい文字列オブジェクトを作成する必要はなく、元の文字列を直接操作します。このクラスのさまざまな文字列操作メソッドは、String クラスによって提供されるものと同じではありません。システムが StringBuffer クラスにメモリを割り当てると、現在の文字が占有するスペースに加えて、追加の 16 文字バッファも提供されます。各 StringBuffer オブジェクトには一定のバッファ容量があり、文字列サイズがその容量を超えない場合、新しい容量は割り当てられません。

具体的な例をいくつか挙げます

文字列の連結

Stringクラスには2つのメソッドがあります

最初の("+")

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1+" "+str2);
    }
  }

2番目の("concat")

public class str{
  public static void main(String[] args){
      String str1="加特效!";
      String str2="Duang~~";
      System.out.println(str1.concat(str2));
    }
  }

StringBufferクラスのメソッド

public class str{
  public static void main(String[] args){
    //构建一个缓冲字符串的对象sb
    StringBuffer sb=new StringBuffer("加特效!");
    //通过append方法,在这个对象后面添加一个新字符串
    sb.append(" Duang~~");
    System.out.println(sb);
  }
}

最終的な出力結果は次のようになります: 特殊効果を追加します。 Duang~~

上記の例から、String クラスを拡張する場合、2 つのオブジェクトをインスタンス化する必要があり、各オブジェクトが一定量のメモリを占有し、StringBuffer クラスがインスタンスを作成する必要がないことを理解するのは難しくありません。新しいクラスを呼び出すだけです。

また、StringBuffer クラスのメモリ容量は拡張可能です。具体的な例を挙げると、

public class str{
  public static void main(String[] args){
     //声明字符串对象sb
      StringBuffer sb=new StringBuffer(40);
      System.out.println(sb.capacity());   //输出字符串的容量capacity
      sb.ensureCapacity(100);         //扩充容量
      System.out.println(sb.capacity());   //输出字符串的容量capacity
    }
  }

capacity() メソッドは、文字列オブジェクトがメモリ内に保持できる文字列の数を表します。メモリ容量を拡張したい場合は、ensureCapacity()メソッドを使用します。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

JAVA の String クラスと StringBuffer クラスの違いに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。