以前的面试经典问题是String与StringBuffer的区别,这里不再赘述。最近开发过程中,发现StringBuilder的使用越来越多,用法与StringBuffer基本相同,但一直不知道具体区别,于是查了一下
这两者主要的区别在于线程安全方面,StringBuffer支持线程同步,保证线程安全,而StringBuilder则是单线程下的等价类,因此性能上StringBuilder是优于StringBuffer的
StringBuffer线程安全的详细解释如下:
Java.lang.StringBuffer线程安全的可变字符序列。类似于 String 的字符串缓冲区,但不能修改。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。