相信大家看到过很多比较StringBuilder和StringBuffer区别的文章,也明白这两者的区别
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一
对对象已经齐全了,那么为什么还要引入新的StringBuilder类干吗?
HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别
也在于此,新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。
这三个类在单线程程序中的性能差别一目了然,采用String对象时,即使运行次数仅是采用其他对象的1/100,其执行时间仍然比其他对象高出25倍以上;而采用StringBuffer对象
和采用StringBuilder对象的差别也比较明显,前者是后者的1.5倍左右。由此可见,如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用
StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了。
统计工具!!!
http://www.chartjs.org/docs/#bar-chart-example-usage