Java基础——浅谈String、StringBuffer和StringBuilder的区别

来源:互联网 发布:高达versus 知乎 编辑:程序博客网 时间:2024/05/24 04:29

String:

    String是一个被final修饰的类,不能被继承。String的值不可变,我们每次操作一个String就会生成一个String对象,这不仅会降低效率,还会造成内存浪费。所以当我们要操作大量数据时,不建议采用String,String只适用于少量数据操作。

StringBuffer:

    可变类,(多线程)线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

    StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
    StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区

StringBuilder:

    可变类,(单线程)线程不安全的字符串操作类,其方法和StringBuffer相同。对于单线程操作字符串,StringBuilder略快于StringBuffer。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类,单线程字符串操作应使用StringBuilder,多线程操作应用StringBuffer。

    一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

   

0 0
原创粉丝点击