第一从值方面考虑:String 是一个常量值,你可以看他的源码,他的类用了final修饰的,这就决定了这个对象是不会变化;StringBuilder和StringBuffer都是变化的,他们拼接字符串的效率要比String快。
第二从线程安全方面考虑:String 就不说了,他是不会改变的,StringBuffer是线程安全的,StringBuilder是线程非安全的。
第三从性能方面考虑: 因为StringBuffer是线程安全的,没有改变值的时候会判断锁,比较消耗资源,所以他的性能相对比StringBuilder要低 : 性能结论: StringBuilder>StringBuffer>String。所以,如果是在单线程中使用,就用StringBuilder。多线程就用StringBuffer
第四从拼接字符串方面考虑: String 一旦创建就没法改变,而另外两个功能比较类似,都可以任意插入、拼接、删除 字符串内容 |