StringBuilder和StringBuffer的区别
今天上午在工作的时候,听到一个同事在问,StringBuilder和StringBuffer有什么区别?另一同事回答:我也不知道,我一直在用StringBuffer。
本人也不太理解这二者区别,特在网上查了一下资料,以作记录。
StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是
StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因
此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程
不安全的。
StringBuffer 始于 JDK 1.0
StringBuilder 始于 JDK 1.5
从 JDK 1.5 开始,带有字符串变量的连接操作(+),JVM 内部采用的是
StringBuilder 来实现的,而之前这个操作是采用 StringBuffer 实现的
个人理解,
StringBuffer 线程安全
StringBuilder 线程不安全
为了达到线程安全的目的会在一定程度上会降低程序的性能。所以在单线程中,StringBuilder的性能要比StringBuffer高。多线程为了线程安全需要采用StingBuffer。其实在线程不考虑的情况下,要是程序对性能的要求不高,太在意这两者的区别就没有什么意义。