String类一旦声明则不可改变,如果要改变,则改变的肯定是String的引用地址,如果一个字符串要被经常的改变,此时就必须使用StringBuffer类,在String类中可以通过“+”进行字符串的连接,但是StringBuffer中却只能使用append()方法进行字符串的连接。
StringBuffer与StringBuilder常用的方法
实例操作举例
实例操作一:字符串的连接操作
public class StringBufferAppendDemo {
public static void main(String[] args) {
StringBuffer bf=new StringBuffer();
bf.append("HELLO");
bf.append("Word").append("!!!");
bf.append("\n");
bf.append("数字=").append(1).append("\n");
bf.append("字符=").append('c').append("\n");
bf.append("布尔=").append(true);
System.out.println(bf);
}
}
以上代码中bf.append(“数字=”).append(1).append("\n");实际上就是一种代码链的操作形式。
实例操作二:在任意位置为StringBuffer添加内容
public class StringBufferInsertDemo {
public static void main(String[] args) {
StringBuffer bf= new StringBuffer();
bf.append(“World”);
bf.insert(0, “Hello”);//在所有内容之前添加
System.out.println(bf);
bf.insert(bf.length(), “北大青鸟”);//在最后添加
System.out.println(bf);
}
}
实例操作三:字符串的反转操作
public class StringBufferReverseDemo {
public static void main(String[] args) {
StringBuffer bf = new StringBuffer();
bf.append("Hello");
bf.reverse();//反转操作
System.out.println(bf);
}
}
实例操作:替换指定范围的内容
public class StringBufferReplaceDemo {
public static void main(String[] args) {
StringBuffer bf = new StringBuffer();
bf.append("Hello ").append("World!!");
System.out.println("替换之前:"+bf);
bf.replace(6, 11, "蒋帅");//替换操作
System.out.println("替换之后:"+bf);
}
}
在String中如果要进行替换,则使用的是replaceAll()方法,而在StringBuffer中使用的是replace()方法,使用时要注意。
实例操作五:字符串截取
public class StringBufferSubStringDemo {
public static void main(String[] args) {
StringBuffer bf = new StringBuffer();
bf.append("Hello").append(" World!!");
String str = bf.substring(5, 13);//指定截取范围,并把内容转化为String类型
System.out.println(str);
}
}
实例操作六:删除指定范围的字符串
public class StringBufferDeleteDemo {
public static void main(String[] args) {
StringBuffer bf = new StringBuffer();
bf.append("Hello ").append("World!!");
String str=bf.delete(6, 11).toString();//删除指定的范围的字符串
System.out.println(str);
}
}
实例操作七:查找指定的内容是否存在
public class StringBufferIndexOfDemo {
public static void main(String[] args) {
StringBuffer bf = new StringBuffer();
bf.append("Hello ").append("World!!");
if(bf.indexOf("Hell")==-1){//判断指定的内容是否存在,不存在返回-1
System.out.println("没有找到指定的内容");
}else{
System.out.println("可以查到指定的内容");
}
}
}
String、StringBuffer与StringBuilder区别:
String: String是一个final类,代表不可变的字符序列,String对象的字符内容是存储在一个字符数组value[]中的。
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储,初始化默认数组长度为16
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储.
对比String、StringBuffer、StringBuilder三者的效率: 从高到低排列:StringBuilder > StringBuffer > String