ホームページ  >  記事  >  Java  >  java_String と StringBuffer の違いの分析

java_String と StringBuffer の違いの分析

高洛峰
高洛峰オリジナル
2017-01-22 09:34:131325ブラウズ

この StringBuffer クラスによって提供される文字列が変更されます。文字データが変更されることがわかっている場合は、StringBuffer を使用できます。通常、文字データを動的に構築するには StringBuffers を使用します。

Javaにはキャラクターの操作を担当するクラスが3つあります。

1.Character は単一の文字を操作し、

2.String は文字列を操作します。不変クラス。

3.StringBuffer も文字列を操作しますが、これは変数クラスです。

String:
はプリミティブ型ではないオブジェクトです。
作成された値は変更できません。
既存の String オブジェクトを変更するには、新しいオブジェクトを作成してから、
StringBuffer:

は変更されると、String のように再確立されません。

コンストラクターを通してのみ作成できます。
StringBuffer sb = new StringBuffer();
注: オブジェクトの作成後、値シンボルを通して支払うことはできません。
sb = "welcome to here!";//error
、メモリはメモリ空間に割り当てられ、最初は null を保存します。 StringBuffer
に値を支払うとき、その append メソッドを使用できます。
sb.append("hello");

上記は抜粋です。以下は私自身の追加の洞察です:

アドレスは変更できませんが、長さと内容は変更できます。 append() メソッドは、予約されたメモリを超えた場合にメモリを 2 倍に追加します。

効率の比較: StringBuffer は String よりも優れています。 StringBuffer にはスペースが予約されており、追加が繰り返されるため、1 つのオブジェクトに対してのみ動作します。文字列は変更できず、変更するにはオブジェクトを繰り返し作成することしかできません。 ——文字列の追加、置換、変更、挿入、削除を頻繁に行う場合は、StringBuffer を使用するのが最適です。 String を使用する必要がある場合は、StringBuffer を使用して toString() を呼び出し、String に変換できます。

public static void main(String[] args) {
         String a="";
         long begin=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             a+=i;
         }
         long end=System.currentTimeMillis();
         System.out.println("String运行时间:"+(end-begin));
         System.out.println("-----------------");
         StringBuffer b=new StringBuffer();
         long begin2=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             b.append(i);
         }
         long end2=System.currentTimeMillis();
         System.out.println("StringBuffer运行时间:"+(end2-begin2));
     }

私のコンピューターはかなりゴミです。実行後の結果は

文字列実行時間: 164593

-----------------

文字列バッファ実行時間: 31

そして文字列には次のものが含まれますStringBuffer にはメソッドが含まれません。 contains は「含む」という意味です。ここで contains メソッドを思い出してください

 public static void main(String[] args) {
         String a="abc";
         boolean str=a.contains("b");
         System.out.println(str);
     }

実行結果は

tru​​e

Java での StringBuffer クラスの使用方法の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。

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