stringとstringbufferの違い
2693 ワード
ニマ、最近2回面接して、この質問をしました.
参考資料:
http://blog.csdn.net/yirentianran/article/details/2871417
java 3 。
1.Character ,
2.String 。 。
3.StringBuffer , 。
String:
.
, , .
String , .
String final , .
StringBuffer:
, String
,
StringBuffer sb = new StringBuffer();
note: .
sb = "welcome to here!";//error
, , null. StringBuffer
append .
sb.append("hello");
StringBuffer String :
String str = new String("welcome to ");
str += "here";
StringBuffer, append(),
StringBuffer toSting();
String StringBuffer , .
String , Sting .
, . .
:
26 5000 ,
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long lstart1 = System.currentTimeMillis();
String str = "";
for (int i = 0; i < times; i++) {
str += tempstr;
}
long lend1 = System.currentTimeMillis();
long time = (lend1 - lstart1);
System.out.println(time);
, 46687 。
46 。
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long lstart2 = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < times; i++) {
sb.append(tempstr);
}
long lend2 = System.currentTimeMillis();
long time2 = (lend2 - lstart2);
System.out.println(time2);
16 0
,StringBuffer String 。 。 100000 , 。 。
:
str += "here";
StringBuffer, append(),
StringBuffer toSting();
str += "here";
StringBuffer sb = new StringBuffer(str);
sb.append("here");
str = sb.toString();
"+" String
String tempstr = "abcdefghijklmnopqrstuvwxyz";
int times = 5000;
long lstart2 = System.currentTimeMillis();
String str = "";
for (int i = 0; i < times; i++) {
StringBuffer sb = new StringBuffer(str);
sb.append(tempstr);
str = sb.toString();
}
long lend2 = System.currentTimeMillis();
long time2 = (lend2 - lstart2);
System.out.println(time2);
46922 , 46 。
: . StringBuffer
参考資料:
http://blog.csdn.net/yirentianran/article/details/2871417