可变字符串
-
StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
-
StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。
代码示例:
/* StringBuffer和StringBuilder的使用 和String 区别 (1)效率比String高 (2)比String节省内存 */ public class Demo04 { public static void main(String[] args) { StringBuffer stringBuffer = new StringBuffer(); //1.append() 追加 stringBuffer.append("java"); System.out.println(stringBuffer.toString()); stringBuffer.append("真香"); System.out.println(stringBuffer.toString()); //2.insert() 添加 stringBuffer.insert(0,"我在最前面"); System.out.println(stringBuffer.toString()); //3.replace() 替换 stringBuffer.replace(0,5,"hello"); //[0,5) System.out.println(stringBuffer.toString()); //4.delete() 删除 stringBuffer.delete(0,5); System.out.println(stringBuffer.toString()); //清空 stringBuffer.delete(0,stringBuffer.length()); System.out.println(stringBuffer.length()); } }
代码验证:
/* 验证StringBuilder效率高于String */ public class Demo05 { public static void main(String[] args) { //开始时间 long start = System.currentTimeMillis(); /*String string = ""; for (int i = 0; i < 9999; i++) { string+=i; //字符串拼接 } System.out.println(string); //用时:250 */ StringBuilder sb = new StringBuilder(); for (int i = 0; i < 9999; i++) { sb.append(i); } System.out.println(sb.toString()); long end = System.currentTimeMillis(); System.out.println("用时:"+(end-start)); //用时:10 } }