[Java学习]Striing StringBuffer StringBuilder 的比
最近发现对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 的比相关推荐
- Java学习之String StringBuffer StringBuilder区别
1.String:对象长度是不可变的,是线程安全. 2.StringBuffer:对象长度是可变的,是线程安全. 3.StringBuilder:对象长度是可变,不是线程安全. 转载于:https:/ ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- Java中的String,StringBuffer,StringBuilder有什么区别?
相信有很多同学都是经常使用String的,或者也或多或少的听说过StringBuffer,StringBuilder,那么在经常遇见的面试题中(标题),到底这三个的区别是什么呢?让我们来一探究竟! S ...
- `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`
Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...
- 深度学习String、StringBuffer、StringBuilder
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它 ...
- Java:中的String,StringBuilder,StringBuffer三者的区别
Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBu ...
- 【转】探秘Java中的String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...
- Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全
首先需要明白什么是线程安全,什么是非线程安全,引用百度百科 关于 Java 中 String,StringBuffer 和 StringBuilder 的区别,参看: Java:String,St ...
最新文章
- PLUS | 包含蛋白质特异性的新型预训练方案
- java之Scanner
- python struct pack解析_python struct pack
- c++ lambda基本语法
- 以POST方式下载文件
- Visual 数据绑定
- MySQL—修改数据库root用户密码
- Map排序,获取map的第一值,根据value取key等操作(数据预处理)
- 黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试)
- CentOS7部署(Mysql) MariaDB Galera Cluster 10.1记录
- 【opencv】visualstudio实现opencvblobslib编译
- 阿里云前端周刊 - 第 18 期
- 模式识别+Matlab 最大似然分类(MLC)【贝叶斯(Bayes)分类法】
- Vibe算法原理与实践(C++)
- linux解压tar文件夹
- can收发器TJA1043
- Caterpillar CAT SIS卡特彼勒最新零件目录系统+维修信息
- Jenkins教程(2)插件源与常用插件
- 中药知多少!!!!!
- 简单理解sticky定位与fixed定位的区别