String 是不可变字符串,不可修改,频繁对String 修改会产生许多对象,垃圾数据。
String类中提供了许多方法,但没有增删改等操作。频繁对字符串进行修改操作,建议使用StringBuffer和StringBuilder,它们是可变字符串,这两个类的用法基本一致。
StringBuffer stringBuffer=new StringBuffer("Hello");
stringBuffer.append("你好");
System.out.println(stringBuffer);
stringBuffer.append("哈哈哈").append("chkdjhckd");
System.out.println(stringBuffer);
stringBuffer.insert(1,"cjdhcjdch");
System.out.println(stringBuffer);
stringBuffer.delete(1,4);//[1,4)
System.out.println(stringBuffer);
stringBuffer.deleteCharAt(1);
System.out.println(stringBuffer);
stringBuffer.setCharAt(1,'c');//将索引为1替换为‘c’;
stringBuffer.setLength(6);//设置保留的字符串长度
System.out.println(stringBuffer);
stringBuffer.reverse();
System.out.println(stringBuffer);
String s = stringBuffer.toString();
System.out.println(s);
区别:
StringBuffer
1、线程安全(多个人同时访问一个字符串不会出现问题)
2、效率低
StringBuilder
1、线程不安全(多个人访问一个字符串会出现问题)
2、效率高
public class Test02_性能对比 {
public static void main(String[] args) {
// String str = "";
StringBuffer sb = new StringBuffer();
long start = System.currentTimeMillis(); // 获取当前时间的毫秒值
for (int i = 1; i <= 100000; i++) {
// str += "hello";
sb.append("hello");
}
long end = System.currentTimeMillis();
System.out.println("花费的时间:" + (end - start) + "ms");
}
}