StringクラスとStringBufferクラスの違い
1、StringとStringBufferの違い:
Stringクラスオブジェクトは可変オブジェクトであり、Stringオブジェクトの値を変更すると、暗黙的に新しいオブジェクトを再作成し、元のStringオブジェクトを解放します.StringBufferクラスオブジェクトは修正可能オブジェクトであり、append()メソッドで値を変更できます.
StringクラスオブジェクトのパフォーマンスはStringBufferクラスにはるかに及ばない.
以上の具体的な解釈については,javaに3つのクラスが文字の操作を担当している.
Characterは、1文字の操作を行うです.
Stringは文字列を操作します.可変クラス.
StringBufferも文字列を操作しますが、可変クラスです.
2、ソース:
Stringオブジェクトのフィールド定義:
StringBufferオブジェクトのフィールド定義:
Stringクラスオブジェクトは可変オブジェクトであり、Stringオブジェクトの値を変更すると、暗黙的に新しいオブジェクトを再作成し、元のStringオブジェクトを解放します.StringBufferクラスオブジェクトは修正可能オブジェクトであり、append()メソッドで値を変更できます.
StringクラスオブジェクトのパフォーマンスはStringBufferクラスにはるかに及ばない.
以上の具体的な解釈については,javaに3つのクラスが文字の操作を担当している.
Characterは、1文字の操作を行うです.
Stringは文字列を操作します.可変クラス.
StringBufferも文字列を操作しますが、可変クラスです.
public class StringMainTest {
public static void main(String[] args) {
String str = "abc";
String tmp = "";
long start = System.currentTimeMillis();
for (int i = 0;i < 500000; i ++) {
str = str + tmp;
}
System.out.println(System.currentTimeMillis() - start);
StringBuffer buf = new StringBuffer("abc");
long start1 = System.currentTimeMillis();
for (int i = 0;i < 500000; i ++) {
buf.append(tmp);
}
System.out.println(System.currentTimeMillis() - start1);
}
}
37
10
2、ソース:
Stringオブジェクトのフィールド定義:
private final char value[];
StringBufferオブジェクトのフィールド定義:
char[] value;