String、StringBuilder和StringBuffer的区别

来源:互联网 发布:淘宝号刷了单会跑吗 编辑:程序博客网 时间:2024/06/07 00:31

继上篇《sql内联查询》

引言

       上篇谈到了stringbuilder,接下来详细介绍下。并分享给亲们其与String和StringBuffer的区别。

       StringBuilder是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。

        主要操作是append和insertt方法。append方法始终将这些字符添加到生成器的末端;而insert方法则在指定的点添加字符。例如,如果a引用一个当前内容为“生龙”的字符串生成器对象(StringBuilder a = new StringBuilder),则该方法调用a.append("活虎")使字符串生成器包含“生龙活虎”,而a.insert(1,"活虎")将更改字符串生成器,使之包含"生活虎龙",但a.insert(a.length(),"活虎")和append有同样的效果。StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。


VS String

       string是常量,定义后不能改变,stringbuilder定义后可以改变。

       如果要声明多个string对象,那么就需要再内存为对象分配多个空间,造成系统开销过大。而StringBuilder在修    改字符串时不用创建新的对象,极大提升性能。有人说了,string对象可以用“+”连接操作啊,但是StringBuilder对象的append效率要比它高哦。


VS StringBuffer

       在执行速度方面的比较:StringBuilder>StringBuffer

       StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象。

       StringBuilder是线程非安全的,StringBuilder是线程安全的。所以在大多数情况下我们是在单线程下用StringBuilder,多线程下用StringBuffer。

    

 小结

        对于三者的总结,如果要操作少量的数据用String,单线程操作字符串缓冲区下操作大量数据用StringBuilder,多线程操作字符串缓冲区下操作大量数据用StringBuffer。





0 0
原创粉丝点击