String和StringBuffer
区别
改变的对象不同
对String进行修改是在内存中新开辟一个空间
对StringBuffer的修改是改变其本身
所以 假如一个字符串需要经常性的改变,用 StringBuffer 比用 String 效率要高
String
字符串常量,是不可变对象, 每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后指向新的String对象
StringBuffer
是可变字符串, 每次对StringBuffer对象进行改变时,会对StringBuffer本身进行操作
StringBuilder
StringBuilder是单线程的,不提供同步
使用效率
区别
改变的对象不同
对String进行修改是在内存中新开辟一个空间
对StringBuffer的修改是改变其本身
所以 假如一个字符串需要经常性的改变,用 StringBuffer 比用 String 效率要高
String
字符串常量,是不可变对象, 每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后指向新的String对象
StringBuffer
是可变字符串, 每次对StringBuffer对象进行改变时,会对StringBuffer本身进行操作
StringBuilder
使用方法等价于StringBuffer,JDK5.0版本以后才出现的
与StringBuffer的区别在于
StringBuffer是线程安全的,所以使用效率比stringbuilder低一些StringBuilder是单线程的,不提供同步
使用效率
String<StringBuffer<StringBuilder
示例:
//我们创建一个StringBuffer对象,可以传入字符串类型,也可以不传,传入int类型没用
StringBuffer buffer = new StringBuffer("金前旺");
//添加的方法
//可以添加字符串,boolean类型数据,char类型数据,char[]数组......几乎什么都能加
buffer.append("我爱打篮球");
buffer.append(false);
buffer.append("char类型数据");
buffer.append("char[]数组");
//将Stringbuffer转换成String字符串,返回的是一个字符串所以用字符串接收
String str = buffer.toString();
//插入方法
buffer.insert(1, "打篮球");
//返回索引
buffer.indexOf("打");