区别:
String:不可变字符序列(类中是通过char value[]字符数组存储,有final修饰,注:JAVA8之后使用Byte[] 存储)
StringBuilder:可变字符序列(继承自抽象类AbstractStringBuilder,类中是通过char value[]字符数组存储,没有final修饰,注:JAVA8之后使用Byte[] 存储),线程不安全,效率高
StringBuffer:可变字符序列(继承自抽象类AbstractStringBuilder,继承的抽象类中是通过char value[]存储,没有final修饰,注:JAVA8之后使用Byte[] 存储),线程安全,需要做线程同步检查,所以效率低
StringBuilder/StringBuffer 常用方法
StringBuilder/StringBuffer除了可以适用String中的一些方法,还有其特有的一些方法。
1、append():在字符串后添加元素
2、delete(int start, int end):删除指定子串
3、insert():在指定位置插入字符串
4、setCharAt(int index, char ch):在指定位置设置字符
5、reverse():反转字符串
StringBuilder sb = new StringBuilder("爱吃火锅");
sb.append("和烤肉").append("以及炖大鹅");
System.out.println(sb); //输出:爱吃火锅和烤肉以及炖大鹅
sb.delete(2,5);
System.out.println(sb); //输出:爱吃烤肉以及炖大鹅
sb.insert(0,"只有我");
System.out.println(sb); //输出:只有我爱吃烤肉以及炖大鹅
sb.setCharAt(6,'串');
System.out.println(sb); //输出:只有我爱吃烤串以及炖大鹅
sb.reverse();
System.out.println(sb); //输出:鹅大炖及以串烤吃爱我有只