简单一个例子,结果在底部,简单测试String、StringBuffer拼接时的时间及空间耗费情况
package 字符串;
import java.util.Date;
public class StringAndStringBuffer {
public static void main(String[] args) {
Date d = new Date();
String s = "str";
String cs = s;
long r = Runtime.getRuntime().freeMemory();
StringBuffer sb = new StringBuffer("str");
for (int i = 0; i < 10000; i++) {
s += cs;
}
System.out.println("String Memory used: "
+ ((r - Runtime.getRuntime().freeMemory()) / 1000) + "K");
System.out.println("String Time Used : "
+ (new Date().getTime() - d.getTime()) + " ms");
// System.gc();
//-----------------
r = Runtime.getRuntime().freeMemory();
d = new Date();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
System.out.println("StringBuffer Memory used: "
+ ((r - Runtime.getRuntime().freeMemory()) / 1000) + "K");
System.out.println("StringBuffer Time Used : "
+ (new Date().getTime() - d.getTime()) + " ms");
// System.gc();
//-----------------
r = Runtime.getRuntime().freeMemory();
d = new Date();
s = "str";
sb = new StringBuffer("str");
for (int i = 0; i < 10000; i++) {
s = s + sb.toString();
s += sb;
}
System.out.println("String拼接StringBuffer Memory used: "
+ ((r - Runtime.getRuntime().freeMemory()) / 1000) + "K");
System.out.println("String拼接StringBuffer Time Used : "
+ (new Date().getTime() - d.getTime()) + " ms");
}
}
结果1:
String Memory used: -123471K
String Time Used : 229 ms
StringBuffer Memory used: 0K
StringBuffer Time Used : 3 ms
String拼接StringBuffer Memory used: 133458K
String拼接StringBuffer Time Used : 733 ms
结果2:
String Memory used: -123512K
String Time Used : 189 ms
StringBuffer Memory used: 0K
StringBuffer Time Used : 3 ms
String拼接StringBuffer Memory used: 133187K
String拼接StringBuffer Time Used : 600 ms
结果3:
String Memory used: -123504K
String Time Used : 184 ms
StringBuffer Memory used: 0K
StringBuffer Time Used : 3 ms
String拼接StringBuffer Memory used: 133187K
String拼接StringBuffer Time Used : 615 ms