可变字符串
- StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
- StringBuilder:可变长字符串,JDK1.5提供,运行效率快、线程不安全。
- 方法:append(),insert(),replace(),delete(),reverse()
package com.jacyzhu.string;
public class Demo04 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
// StringBuilder sb = new StringBuilder();
// 1.append();追加
sb.append("java世界第一");
System.out.println(sb); // java世界第一
System.out.println(sb.toString()); // java世界第一
sb.append("java真香");
System.out.println(sb.toString()); // java世界第一java真香
sb.append("java不错");
System.out.println(sb.toString()); // java世界第一java真香java不错
// 2.insert(); 添加
sb.insert(0, "我在最前面");
System.out.println(sb.toString()); // 我在最前面java世界第一java真香java不错
// 3.replace();
sb.replace(0, 5, "hello");
System.out.println(sb.toString()); // hellojava世界第一java真香java不错
// 4.delete(); 删除
sb.delete(0, 5);
System.out.println(sb.toString()); // java世界第一java真香java不错
// 5.反转
sb.reverse();
System.out.println(sb.toString()); // 错不avaj香真avaj一第界世avaj
// 6.清空
System.out.println(sb.length()); // 20
sb.delete(0, sb.length());
System.out.println(sb);
System.out.println(sb.length()); // 0
}
}
运行结果:
java世界第一
java世界第一
java世界第一java真香
java世界第一java真香java不错
我在最前面java世界第一java真香java不错
hellojava世界第一java真香java不错
java世界第一java真香java不错
错不avaj香真avaj一第界世avaj
20
0
验证StringBuilder效率高于String
package com.jacyzhu.string;
// 验证StringBuilder效率高于String
public class Demo05 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// String string = "";
// for (int i = 0; i < 99999; i++) {
// string += i;
// }
// System.out.println(string);
// StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 99999; i++) {
sb.append(i);
}
System.out.println(sb.toString());
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start)); // String用时:16794 StringBuffer用时:14 StringBuilder用时:13
}
}