ホームページ >Java >&#&チュートリアル >java_String と StringBuffer の違いの分析
この StringBuffer クラスによって提供される文字列が変更されます。文字データが変更されることがわかっている場合は、StringBuffer を使用できます。通常、文字データを動的に構築するには StringBuffers を使用します。
Javaにはキャラクターの操作を担当するクラスが3つあります。
1.Character は単一の文字を操作し、
2.String は文字列を操作します。不変クラス。
3.StringBuffer も文字列を操作しますが、これは変数クラスです。
String:
はプリミティブ型ではないオブジェクトです。
作成された値は変更できません。
既存の String オブジェクトを変更するには、新しいオブジェクトを作成してから、
StringBuffer:
コンストラクターを通してのみ作成できます。
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); }
実行結果は
true
Java での StringBuffer クラスの使用方法の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。