String和StringBuffer的区别
- String和StringBuffer都可以存储和操作字符串,即包含多个字符的字符数据。
- String是不可变对象,一旦被创建就不能再修改它的值,对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去,而StringBuffer是一个可变对象,当对他进行修改的时候不会像String那样重建对象;
- String是final类,不能被继承;
- StringBuffer只能通过构造函数来建立,StringBuffer sb = new StringBuffer(),对象被建立以后,就在内存中分配内存空间,并初始保存一个null,以后就通过append方法进行赋值;
- 字符串连接操作中StringBuffer的效率明显比String高;
使用String做10000次向一字符串后添加字符串,耗时1872ms,内存消耗1301KB;
使用StringBuffer做10000次向一字符串后添加字符串,耗时15ms,内存消耗162KB;
补充
- StringBuffer的方法:
- 追加字符串:sb.append(str);
- 删除指定位置的字符:sb.deleteCharAt(index);
- 删除某段字符串:sb.delete(start,end);
- 在指定位置插入:sb.insert(index,str);
- 字符串逆转:sb.reverse();
- 修改index位置的值:sb.setChatAt(index,char);
- 缩小存储空间到字符串长度:sb.trimToSize();
- 获取字符串长度:sb.length();
- 替换字符串:sb.replace(start,end,str);
- 转换为不变字符串:sb.toString();