java中的StringBuilder和StringBuffer

来源:互联网 发布:电脑绘图板软件 编辑:程序博客网 时间:2024/06/18 03:47

为什么要使用StringBuilder和StringBuffer?

public class Test{
    public static void main(String[] args){
        String str="hello";
        System.out.println(str+"world");
        System.out.println(str);
    }
}

运行结果:
helloworld
hello

从上面的运行结果可以看出:程序运行时会额外创建一个对象,用来保存"helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用StringBuffer或StringBuilder就可以避免这个问题。


StringBuilder和StringBuffer的区别:

StringBuilder和StringBuffer基本相似,不同之处是StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高(速度快)。

当字符串缓冲被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行操作,所以一般情况下为了提高速度建议使用StringBuilder。


下面以StringBuilder类为例:

(1)创建一个空的StringBuilder对象:

StringBuilder str1=new StringBuilder();  //创建一个空的StringBuilder对象StringBuilder str2=new StringBuilder("Tom");  //创建一个字符串"Tom"

(2)StringBuilder类的常用方法:

返回值类型            方法名()                                                  说明

StringBuilder       append(参数)                 追加内容到当前StringBuilder对象的末尾

StringBuilder       insert(参数)                    将内容插入到StringBuilder对象的指定位置

String                    toString()                         将StringBuilder对象转换为String对象

int                          length()                           获取字符串的长度


例如:

public class Test{public static void main(String[] args){StringBuilder str=new StringBuilder("Hello");  System.out.println("插入前字符串的长度为:"+str.length());str.append(" World!");System.out.println("插入后字符串的长度为:"+str.length());String str1=str.toString();  //转换为String类型System.out.println(str1);}}

运行结果:

插入前字符串的长度为:5

插入后字符串的长度为:12

Hello World!

0 0