StringBuffer
- 每一个字符串的常量都属于一个String类的匿名对象,并且不可更改
- String有俩个常量池:静态常量池,运行时常量池
- String类对象实例化建议使用直接赋值的形式完成,这样可以直接将独享保存在对象池中以方便下次重用
弊端,虽然String类很好用,但是会有一个很大的弊端,内容在频繁的修改会造成很大的性能损失,原因是,String类对象进行修改时实际上原始的字符串没有发生变化,而改变的只是String类对象的引用关系.也就是说,字符串一旦定义就不可以改变
在开发中,如果需要频繁的修改一个字符串,那么就应该用StringBuffer或StringBuilder代替
StringBuffer不像String类那样有俩种对象实例化的方式
jdk1.0开始就有了
StringBuffer与String类不能直接互相转换
有以下几种方式
String转StringBuffer
调用Stringbuffer构造方法,传入String,或者调用StringBuffer实例对象的append方法传入STring
StringBuffer转String
调用Stringbuffer实例对象的toString方法,或调用String的构造方法传入StringBuffer
常用方法
public StringBuffer append(数据类型变量)
public StringBuffer reverse()
public StringBuffer insert (int offset ,数据类型 变量) 在制定位置追加指定内容
public StringBuffer delete(int start ,int end)删除指定索引范围的内容
StringBuilder
从jdk1.5开始,java增加了一个新的字符串操作类,StringBuilder
这俩各类几乎完全相同,打开源码才会发现区别,在StringBuffer类中定义的方法全部使用Synchronized进行同步定语,而StringBuilder中没有,所以StringBuffer类的方法都是异步方法