版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/52159425

最近发现对java中一些比较基础的东西掌握还是不够,比如今天遇到的String,StringBuffer,StringBuilder之间的区别。这篇文章为大家详细解释这三者之间的区别。

三者速度上的较量:

StringBuilder > StringBuffer  >String.

这是为什么呢?为什么String的效率最低?我

String:字符串常量

StringBuffer:字符串变量

StringBuilder:字符串变量

从上面的名字可以看到,String是“字符串常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问  ,比如这段代码:

<span style="font-size:14px;">String str = "qwerty";
str = str+1;
System.out.print(str);</span>

输出结果:qwert1

从上面的例子可以看到str明明是被我们改变了的。为什么说String不可改变昵?其实这是一种欺骗。我们可以用JVM来解释这段代码:

首先创建String对象str,再给它赋值qwerty;再创建一个新的String对象str,让它执行第二行代码,所以我们每次调用String对象时其实是创建一个新的String对象。而之前的String对象会通过GC自动回收。所以String的效率才会这么低。 而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

StringBuilder与 StringBuffer

    StringBuilder:线程非安全的

    StringBuffer:线程安全的

当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结: 1.如果要操作少量的数据用 = String

                        2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

                        3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

[Java学习]Striing StringBuffer StringBuilder 的比相关推荐

  1. Java学习之String StringBuffer StringBuilder区别

    1.String:对象长度是不可变的,是线程安全. 2.StringBuffer:对象长度是可变的,是线程安全. 3.StringBuilder:对象长度是可变,不是线程安全. 转载于:https:/ ...

  2. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  3. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  4. Java中的String,StringBuffer,StringBuilder有什么区别?

    相信有很多同学都是经常使用String的,或者也或多或少的听说过StringBuffer,StringBuilder,那么在经常遇见的面试题中(标题),到底这三个的区别是什么呢?让我们来一探究竟! S ...

  5. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  6. 深度学习String、StringBuffer、StringBuilder

    相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它 ...

  7. Java:中的String,StringBuilder,StringBuffer三者的区别

    Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBu ...

  8. 【转】探秘Java中的String、StringBuilder以及StringBuffer

    探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...

  9. Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全

    首先需要明白什么是线程安全,什么是非线程安全,引用百度百科  关于 Java 中 String,StringBuffer 和 StringBuilder 的区别,参看:  Java:String,St ...

最新文章

  1. PLUS | 包含蛋白质特异性的新型预训练方案
  2. java之Scanner
  3. python struct pack解析_python struct pack
  4. c++ lambda基本语法
  5. 以POST方式下载文件
  6. Visual 数据绑定
  7. MySQL—修改数据库root用户密码
  8. Map排序,获取map的第一值,根据value取key等操作(数据预处理)
  9. 黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试)
  10. CentOS7部署(Mysql) MariaDB Galera Cluster 10.1记录
  11. 【opencv】visualstudio实现opencvblobslib编译
  12. 阿里云前端周刊 - 第 18 期
  13. 模式识别+Matlab 最大似然分类(MLC)【贝叶斯(Bayes)分类法】
  14. Vibe算法原理与实践(C++)
  15. linux解压tar文件夹
  16. can收发器TJA1043
  17. Caterpillar CAT SIS卡特彼勒最新零件目录系统+维修信息
  18. Jenkins教程(2)插件源与常用插件
  19. 中药知多少!!!!!
  20. 简单理解sticky定位与fixed定位的区别

热门文章

  1. 苹果手机怎么设置时间24小时制_8款手机电池测试,iPhone 12 5G让人意外
  2. Java code lib aes 加解密
  3. bat、sh等批处理文件(脚本文件)
  4. 设计模式的六大原则(个人笔记)
  5. ERROR Worker: All masters are unresponsive! Giving up
  6. 089-袁佳鹏-实验报告1
  7. H5新特性 input type=date 在手机上默认提示显示无效解决办法
  8. emca 更改监听端口
  9. ASP.NET防伪令牌与JSON有效载荷
  10. 九项重要的职业规划提示