Java常用类:StringBuffer和StringBuilder类
Java常用类:StringBuffer和StringBuilder类
可变字符串
- StringBuffer :可变长字符串,JDK1.0提供,运行效率慢,线程安全
- StringBuilder :可变长字符串,JDK5.0提供,运行效率快,线程不安全
- 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类
常用方法
-
append(String s);
将指定的字符串追加到此字符序列 -
insert(int offset, String str);
将str字符串插入此字符串中 -
replace(int start, int end, String str);
使用str替换掉指定范围的子字符串 -
delete(int start, int end);
删除指定范围的子字符串 -
reverse();
反转字符串
示例:
public class Demo01 {
public static void main(String[] args) {
System.out.println("StringBuffer:");
StringBuffer sb = new StringBuffer("Blog:");
//append();末尾追加
sb.append("Java");
System.out.println(sb);
sb.append("永远滴神");
System.out.println(sb);
//insert();指定位置插入
sb.insert(9," SE");
System.out.println(sb);
//replace();指定位置替换
sb.replace(0,5,"博客:");//左闭右开区别[0,5)
System.out.println(sb);
//delete();指定位置删除
sb.delete(0,3);//左闭右开区别[0,3)
System.out.println(sb);
//reverse();字符串翻转
sb.reverse();
System.out.println(sb);
System.out.println("=================");
//StringBuffer 和 StringBuilder差不多
System.out.println("StringBuilder:");
StringBuilder sb1 = new StringBuilder("Blog:");
//append();末尾追加
sb1.append("Java");
System.out.println(sb1);
sb1.append("永远滴神");
System.out.println(sb1);
//insert();指定位置插入
sb1.insert(9," SE");
System.out.println(sb1);
//replace();指定位置替换
sb1.replace(0,5,"博客:");//左闭右开区别[0,5)
System.out.println(sb1);
//delete();指定位置删除
sb1.delete(0,3);//左闭右开区别[0,3)
System.out.println(sb1);
//reverse();字符串翻转
sb1.reverse();
System.out.println(sb1);
}
}
输出
StringBuffer:
Blog:Java
Blog:Java永远滴神
Blog:Java SE永远滴神
博客:Java SE永远滴神
Java SE永远滴神
神滴远永ES avaJ
=================
StringBuilder:
Blog:Java
Blog:Java永远滴神
Blog:Java SE永远滴神
博客:Java SE永远滴神
Java SE永远滴神
神滴远永ES avaJ
验证效率
-
StringBuffer 和 StringBuilder 类都比 String 类运行快
-
验证: StringBuilder > StringBuffer > String
-
实例:
public class Demo02 { public static void main(String[] args) { //开始时间 long star = System.currentTimeMillis(); String str1 = ""; for (int i = 0; i < 55555; i++) { str1 += i; } //结束时间 long end = System.currentTimeMillis(); System.out.println("String用时:" +(end-star)); //开始时间 long star1 = System.currentTimeMillis(); StringBuffer str2 = new StringBuffer(); for (int i = 0; i < 55555; i++) { str2.append(i); } //结束时间 long end1 = System.currentTimeMillis(); System.out.println("StringBuffer用时:" +(end1-star1)); //开始时间 long star2 = System.currentTimeMillis(); StringBuilder str3 = new StringBuilder(); for (int i = 0; i < 55555; i++) { str3.append(i); } //结束时间 long end2 = System.currentTimeMillis(); System.out.println("StringBuilder用时:" +(end2-star2)); } }
输出
String用时:1851 StringBuffer用时:7 StringBuilder用时:4