StringBuffer ,StringBuilder
【小城贝尔】
缓存建设字符串,序列长短皆可变。
缓存安全低效率,常用建设无异议。
public static void main(String[] args) {
//StringBuilder 和 StringBuffer 都是可变字符串不同的是
// StringBuffe是线程安全的效率稍稍低一点点
StringBuilder sb = new StringBuilder("2345");
System.out.println("sb : "+ sb +" hashCode : "+ sb.hashCode());
//倒序
sb.reverse();
System.out.println("sb : "+ sb +" hashCode : "+ sb.hashCode());
StringBuilder s = new StringBuilder();
for(int i = 0; i < 26; i ++){
char value = (char)('a'+i);
s.append(value);
}
System.out.println(s);//abcdefghijklmnopqrstuvwxyz
}
测试内存【memory】消耗
/**
* String消耗内存 : 3023512
* Builder消耗内存 : 90152
*
*/
public static void testMemory(){
long sm = Runtime.getRuntime().freeMemory();
String str = "string";
for(int i = 0 ; i < 5000; i ++){
str = str + i;
}
long em = Runtime.getRuntime().freeMemory();
System.out.println("String消耗内存 : "+ (sm - em));//String消耗内存 : 3023512
long sm1 = Runtime.getRuntime().freeMemory();
StringBuilder sb = new StringBuilder("string");
for(int i = 0 ; i < 5000; i ++){
sb.append(i);
}
long em1 = Runtime.getRuntime().freeMemory();
System.out.println("Builder消耗内存 : "+ (sm1 - em1));//String消耗内存 : 3023512
}