1.前言
众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的 ,但是 StringBuilder 速度会更快。
事实上 作为一个字符串拼接 方法 ,在线程安全的应用场景几乎没有 【在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,
则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。】,但考虑到线程安全,首先应该相对加锁,
可是有了 锁 ,字符串拼接 就没必要一定是线程安全的了 ,会极大的拖慢运行速度 【这就是以前为什么说java 运行速度慢的 一个重要因素】,
因此应该 使用 StringBuilder 。
2.那为什么会有StringBuffer的存在?
原因很简单 ,因为最早是没有 StringBuilder 的,那时候只有StringBuffer。
sun的人不知处于何种愚蠢的考虑,决定让stringbuffer是线程安全的,然后大约10年之后,人们终于意识到这是一个多么愚蠢的决定,
意识到在这10年之中这个愚蠢的决定为java运行速度慢这样的流言贡献了多大的力量,于是,在jdk1.5的时候,终于决定提供一个非线程安
全的StringBuffer实现,并命名为StringBuilder。