`
icyhins
  • 浏览: 4219 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于Java中String,StringBuilder以及StringBuffer的区别简单汇总

阅读更多
都是百度回来的结果,原创是谁就不清楚了,个人整理一下,谨以自勉。
因为大部分内容个人未经证实,所以强烈不建议转载!
记住,无图无真相!

容量:
1.String类似不可变的。

2.StringBuilder以及StringBuffer则是可变长度的。

——————————————————————————————————————-——

分类:
1.String,因为没查MSDN及API,因此不清楚 .Net及Java中的功能区别,但有人评价“.Net的String类的强大不是其他String类可比的”

2.StringBuilder是一个.Net的类,它就是用来完成Java的StringBuffer功能的类。强调其用了Builder模式,其实聚合了一个Buffer来完成这个事情,那么这个类主要是退居为一个服务类型。

3.StringBuffer是Java类,强调出了这个类的实现方式

——————————————————————————————————————-——

线性安全:
1.StringBuilder 线性不安全
2.StringBuffer  线性安全

——————————————————————————————————————-——

性能:
直接转了一篇东东,仅作参考!!!!!!

!!!!!!!!!!!!!!!!仅作参考仅作参考!!!!!!!!!!!!!!!!
通过非官方试验测试,StringBuilder和StringBuffer的测试总结如下:
1.  为了获得更好的性能,在构造 StirngBuffer 或 StirngBuilder 时应尽可能指定它的容量。当然,如果你操作的字符串长度不超过 16 个字符就不用了。

2.  相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。而在现实的模块化编程中,负责某一模块的程序员不一定能清晰地判断该模块是否会放入多线程的环境中运行,因此:除非你能确定你的系统的瓶颈是在 StringBuffer 上,并且确定你的模块不会运行在多线程模式下,否则还是用 StringBuffer 吧 J

3.  用好现有的类比引入新的类更重要。很多程序员在使用 StringBuffer 时是不指定其容量的(至少我见到的情况是这样),如果这样的习惯带入 StringBuilder 的使用中,你将只能获得 10 %左右的性能提升(不要忘了,你可要冒多线程的风险噢);但如果你使用指定容量的 StringBuffer ,你将马上获得 45% 左右的性能提升,甚至比不使用指定容量的 StirngBuilder 都快 30% 左右。
!!!!!!!!!!!!!!!!仅作参考仅作参考!!!!!!!!!!!!!!!!
分享到:
评论

相关推荐

    Java编程中常见问题汇总

    ### Java编程中常见问题汇总 #### 一、引言 在日常开发中,Java程序员往往会遇到各种各样的问题,有些看似微不足道的小细节却能在不经意间影响代码的质量与性能。本文将根据提供的资料,详细解析Java编程中的一些...

    能让你成为一个优秀的 Java 全栈程序员的系统化系列教程

    String、StringBuffer 和 StringBuilder Java 中的语法糖 深入理解 static 关键字 深入理解 Java 变量 深入理解 final、finally、finalize 浅拷贝和深拷贝 关于四种引用类型 Java 开发最容易忽视的 10 个 Bug Java ...

    Java常用类String的面试题汇总(java面试题)

    8. String、StringBuilder和StringBuffer之间的区别? String是不可变的。每次对String做修改时,都会生成新的String对象。而StringBuilder和StringBuffer都是可变的字符串,意味着它们的内容可以被改变。...

    Java 编程 :常见问题汇总

    对于循环中的字符串拼接,使用`StringBuilder`或`StringBuffer`比简单地使用`+`操作符更高效。这是因为每次使用`+`操作符时都会创建一个新的字符串对象,而在大量迭代的情况下,这种做法会显著降低程序的性能。 **...

    JAVA面试题汇总(基础、容器、多线程等等).docx

    8. String str="i" 和 String str=new String("i") 的区别:String str="i" 的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。 _java 容器知识点_ 9. 如何将字符串...

    java面试汇总.docx

    这些只是Java面试题中的一部分,全面掌握Java技术栈需要深入学习并理解这些基础知识以及它们的实际应用场景。在准备面试时,不仅要知道答案,还要理解背后的原理,这样才能在实际工作中灵活运用。

    最新java面试题汇总

    在这份面试题汇总中,关于面向对象的特征被详细询问,包括抽象、继承、封装和多态性。 1. 面向对象的特征包括: - 抽象:抽象是指对现实世界问题的一个简化表示,它隐藏了细节,只关注特定的问题。在Java中,抽象...

    java笔试题大汇总

    String是不可变对象,每次修改都会创建新对象,而StringBuffer(在Java 5后被StringBuilder取代)支持在原对象上修改字符串,避免不必要的内存开销。 5. 运行时异常与一般异常: 运行时异常是程序运行期间可能...

    Java面试题库汇总

    7. **字符串操作**:掌握String类的特点,以及StringBuilder和StringBuffer的区别。 8. **数组和集合**:理解数组的特性,熟悉List、Set、Map等集合接口及其实现类的使用。 9. **多线程**:学习线程的创建方式...

    100家大公司java笔试题汇总

    String是final类,不可被继承,且通常推荐使用StringBuilder或StringBuffer来构建和修改字符串,以提高性能。 3. **int与Integer的区别**:int是原始数据类型,而Integer是其对应的封装类。原始类型直接存储值,...

    java面试笔试题大汇总

    Java面试笔试题大汇总涵盖了Java编程中的核心概念和常见面试问题。以下是对这些知识点的详细说明: 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化,只关注与当前目标相关的属性和行为,忽略不重要的...

    java面试题汇总

    3. **String与StringBuilder/StringBuffer**:String在Java中是不可变的,一旦创建就不能修改。如果需要频繁修改字符串,应使用StringBuilder或StringBuffer(多线程环境下推荐使用StringBuffer)。这两者都用于构建...

    JAVA面试题目大汇总

    以上知识点涵盖了Java面试中的基础理论、类库使用以及企业级开发的关键概念,对于准备Java面试的开发者来说,理解和掌握这些内容至关重要。在面试中,能够深入浅出地解释这些概念,将有助于展现你的专业技能和对Java...

    java面试题经典汇总

    以上是根据题目要求整理的关键Java知识点,涵盖了面向对象的特征、数据类型、Web Service 的概念、异常处理机制、集合类的比较、EJB 概念以及 HashMap 和 Hashtable 的区别等内容。这些知识点对于准备 Java 面试非常...

    一个很不错的JAVA笔试题汇总

    3. **String与StringBuilder/StringBuffer的区别** - **String**:不可变,一旦创建就不能修改,适合在字符串不变的情况下使用。 - **StringBuilder/StringBuffer**:可变,适合在字符串需要频繁修改时使用,线程...

    阿里巴巴Java方向面试题汇总(含答案).pdf

    在 Java 面试中,了解 String、 StringBuffer 和 StringBuilder 的区别是非常重要的。String 是不可变的,因为它在 JDK 中被声明为 final 类,而 StringBuffer 和 StringBuilder 是可变的,因为它们的字符内容可以...

    125条常见java面试题大汇总

    Java编程语言在软件开发领域占据着重要的地位,尤其在企业级应用中,Java以其稳定性、安全性以及跨平台的特性受到广泛青睐。面试中,Java程序员经常会被问到一系列关于语言特性和框架的问题,以评估他们的专业技能。...

Global site tag (gtag.js) - Google Analytics