string是不可变字符串String类中使用内存数组保存字符串,有final修饰符所以string对象是不可变的。private final char value[];
StringBuilder和StringBuffer是可变字符串,都是AbstractStringBulider类的子类在AbstractStringBulider中也是使用字符数组保存字符串所以他是可变的 char[] value;
StringBuilder类中的方法没有使用synchronized关键字修饰,所以他的方法都是线程不安全,但是性能好
StringBuffer类中的方法使用synchronized关键字修饰,所以他的方法线程安全,但是性能差。
StringBuilder的方法
1.append方法
将文本或对象的字符串表示形式添加到当前StringBuilder对象表示的字符串的结尾处。
StringBuilder sb=new StringBuilder();
sb.append("巴山楚水凄凉地,responsibility");
System.out.println(sb);//巴山楚水凄凉地,responsibility
(2)Insert方法
Insert方法将字符串或对象添加到C中的指定位置
StringBuilder sb=new StringBuilder("abcd");
//insert:在指定下标位置,插入“新内容”
sb.insert(2, "123")
.insert(2, true)
.insert(2, Math.PI);
System.out.println(sb);//ab3.141592653589793true123cd
(3)delete方法
从当前StringBuilder中移除指定数量的字符(按照下标范围删除字符串内容)
sb.append("巴山楚水凄凉地,responsibility")
.delete(10, 12)//按照下标范围删除字符串内容
.deleteCharAt(0);
System.out.println(sb);//山楚水凄凉地,reonsibility巴山楚水凄凉地,responsibility
(4)replace方法
用另一个指定的字符来替换StringBuilder对象中内的字符。
sb.replace(1, 3, "宝塔镇");//将下标1-3(不含)的字符串内容,替换为宝塔镇
System.out.println(sb);//天宝塔镇地虎
sb.replace(0, 1, "");//0-1替换为""
System.out.println(sb);//宝塔镇地虎
(5)reverse方法
反转StringBuilder对象中的字符。
StringBuilder sb=new StringBuilder("甲乙丙丁");
sb.reverse();
System.out.println(sb);//丁丙乙甲