String , StringBuilder StringBuffer 的区别
来源:互联网 发布:如何手机秒杀淘宝商品 编辑:程序博客网 时间:2024/06/03 12:32
引言
String , StringBuilder StringBuffer 的区别,这个问题是面试中经常被问到的经典问题,今天有空,整理下,顺便翻译下国外的一篇文章,以分享给大家,希望对各位有所帮助,也欢迎大家在评论区指出文章不足之处,讨论交流String , StringBuilder StringBuffer 的区别。谢谢各位!
原文来源
如果你英文很不错,还是看原文比较好
Difference Between String , StringBuilder And StringBuffer Classes With Example : Java
译文
Difference Between String , StringBuilder And StringBuffer Classes With Example : Java
今天我们要理解下String , StringBuilder StringBuffer 的区别。并且你会发现在以上提到的类中有微小的区别
String
String 是 不可变的对象(一旦创建 就不能被改变)。String 对象被存储在Constant String Pool中(字符串池)。Java中每一个不变的对象都是线程安全的,这意味着String也是线程安全的。String 不能同时被两个线程使用。
String demo = " hello " ;//上面的对象被被存储在Constant String Pool中(字符串池),它的值不能被改变
demo="Bye" ;//新的“Bye”字符串在字符串池中被创建,并且被demo 引用//“hello”字符串仍然存在在字符串池,它的值也没有被重新,但是我们失去了对“hello”字符串的引用
StringBuffer
StringBuffer 是可变的,意味着你可以改变对象的值。StringBuffer创建的对象被保存在“堆”上。StringBuffer与StringBuilder有相同的方法,但是StringBuffer中的每一个方法都是同步的,也就是线程安全的。
所以, 它不允许连个线程同时进入同一个方法。一个方法一次只能被一个线程访问。
但是线程安全也有劣势。StringBuilder比StringBuffer更快。
StringBuffer 可以转换成String类型通过 toString
方法。
StringBuffer demo1 = new StringBuffer("Hello") ;// The above object stored in heap and its value can be changed .上面这个对象存储在堆上,其值可以被改变demo1=new StringBuffer("Bye");// Above statement is right as it modifies the value which is allowed in the StringBuffer上面的代码是正确的,并且它修改了StringBuffer的值
StringBuilder
StringBuilder 也是讲创建的对象存储在堆上。主要区别在于StringBuilder是线程不安全的,所以StringBuilder更快一些。
StringBuilder demo2= new StringBuilder("Hello");// The above object too is stored in the heap and its value can be modified//上面这个对象存储在堆上,其值可以被改变demo2=new StringBuilder("Bye"); // Above statement is right as it modifies the value which is allowed in the StringBuilder//上面的代码是正确的,并且它修改了StringBuilder的值
对比
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String, StringBuffer, StringBuilder的区别?
- String,StringBuffer, StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String , StringBuffer, StringBuilder的区别
- String 、 StringBuffer 、StringBuilder 的区别
- String StringBuffer StringBuilder的区别
- String、StringBuffer、StringBuilder的区别
- String, StringBuffer, StringBuilder的区别
- String StringBuffer StringBuilder的区别
- string、stringbuffer、stringbuilder的区别
- String、StringBuffer 、StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String ,StringBuffer,StringBuilder的区别
- String,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String,StringBuffer,StringBuilder的区别?
- 长连接和短链接的解析
- Linux驱动的两种安装方式
- Android 数字进度条NumberProgressBar
- Codeforces Round #365 (Div. 2) B
- 求出三个数字中的最大值和最小值
- String , StringBuilder StringBuffer 的区别
- Maven:使用入门
- 数据结构与算法的知识模块
- 百度登录加密协议分析(上)
- mysql的yum安装
- [kuangbin带你飞]专题五 并查集 H POJ 1733
- elasticsearch sql的安装
- 7.3.2 Using Backups for Recovery 使用备份用于恢复
- [小技巧] 使用 diff 命令来比较标准输出