Java中String和StringBuffer以及StringBuilder的比较

String类是不可变类,任何对String的改变都会引发新的String对象的生成。

StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象。当改变字符串内容时,采用StringBuffer能获得更好的性能。

StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

可以试试下面的例子:

运行效果如下图:

String、StringBuffer、StringBuilder单线程性能比较

从上面的结果来看,这三个类在单线程程序中的性能差别一目了然,采用String对象时,即使运行次数仅是采用其他对象的1/100,其执行时间仍然比其他对象高出20倍以上;而采用StringBuffer对象和采用StringBuilder对象的差别也比较明显,前者是后者的1.5倍左右。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">