在项目开发中,String是一个必不可少的工具类,但是String类自身有一个最大的缺陷,内容一旦声明,则不可改变,所以在jdk中为了方便用户修改字符串的内容提供了StringBuffer类。
StringBuffer()类并不像String类那样可以直接通过声明字符串常量的方式进行实例化,而是必须像普通类对象使用一样,首先通过构造方法进行对象实例化,而后才可以调用方法执行处理。
StringBuffer类常用方法:
范例:修改StringBuffer内容
(连接,类似于String中的“+”)
public class JavaAPIDemo {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer("www."); //实例化StringBuffer
change(buf); //修改StringBuffer内容
String data=buf.toString(); //将StringBuffer变为String实例
System.out.println(data);
}
private static void change(StringBuffer buf) {
buf.append("类库.").append("com");
}
}
执行结果
www.类库.com
用户使用”String str="a”+“b”+“c”,定义字符串时,程序编译后的结果等价于以下操作;
StringBuffer buf=new StringBuffer();
buf.append(“a.”).append(“b”).append(“c”);
范例:插入数据
(索引位置插入替换。)
public class JavaAPIDemo2b {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append(".com").insert(0, "www.").insert(4, "类库");
System.out.println(buf);
}
}
执行结果
www.类库.com
范例:删除指定范围中的内容
(索引前删后不删)
public class JavaAPIDemo2b3c {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("hello java !").delete(6,11).insert(6, "lilei");
System.out.println(buf);
}
}
执行结果
hello lilei!
范例:字符串反转
(最有特点的方法)
package com.lxh.fifteenchapter;
public class javaAPIDemo4d {
public static void main(String[] args) {
StringBuffer buf=new StringBuffer();
buf.append("hyguyhguhu");
System.out.println(buf.reverse());
}
}
执行结果
uhughyugyh
StringBuffer与StringBuilder
StringBuffer类是在jdk1.0提供的。jdk1.5提供了StringBuilder类。这两个类的功能类似,都是可修改的字符串类型,区别在于,StringBuffer类中的方法使用了synchronized关键字定义。所以StringBuffer是线程安全的,StringBuilder是非线程安全的方法,也就是线程不安全。