现在看了,知道了,太简单了,其实说白了,StringBuffer 和 StringBuilder 的区别就如同 HashTable 和 HashMap 的区别;就如同 ArrayList 和 Vector 的区别。是的,只是区别在同步与非同步上、线程安全与不安全,同时由此影响的单线程环境时的性能上。
StringBuffer 和 StringBuilder 在提供给外部方法是一样的,只是 StringBuffer 的方法前都加有 synchronized 关键字,而 StringBuilder的方法前没有 synchronized 。因此 StringBuilder 比 StringBuffer 处理起来要快。相信刚开始学Java时就有人告诉过你(或者是在面试时被问到过):推荐使用 ArrayList 来代替 Vector ,同样如果你用 JDK1.5 话也推荐你多用 StringBuilder 而不是 StringBuffer ,因为单线程或多线程但安全的情况比较普遍,就因为 StringBuilder �臁tringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。
StringBuffer 和 StringBuilder 在提供给外部方法是一样的,只是 StringBuffer 的方法前都加有 synchronized 关键字,而 StringBuilder的方法前没有 synchronized 。因此 StringBuilder 比 StringBuffer 处理起来要快。相信刚开始学Java时就有人告诉过你(或者是在面试时被问到过):推荐使用 ArrayList 来代替 Vector ,同样如果你用 JDK1.5 话也推荐你多用 StringBuilder 而不是 StringBuffer ,因为单线程或多线程但安全的情况比较普遍,就因为 StringBuilder �臁tringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。
本文对比了StringBuilder与StringBuffer在Java中的使用。主要区别在于同步与否,StringBuilder在单线程中性能更优,适合大多数场景;而StringBuffer则保证线程安全。选择合适的数据结构可以有效提升程序效率。
326

被折叠的 条评论
为什么被折叠?



