String StringBuffer StringBuilder的区别
来源:互联网 发布:大数据和股票有哪些 编辑:程序博客网 时间:2024/04/29 02:31
简明扼要:
不同点:
1. String对象是不可改变的,StringBuffer对象和StringBuilder对象是可修改的。
2. String对象保存在constant String Pool中,而Stringbuffer和StringBuilder保存在heap中。
3. String和StringBuffer是线程安全的,而StringBuilder不是线程安全的。
4. String和StringBuffer在jdk 1.0中就已提供,StringBuilder在jdk 1.5时才提供。
5. String和StringBuilder执行速度快,StringBuffer执行速度慢。
相同点:
1. 都是操作String的类。
2. 都在java.lang.*;包下。
String:
1. String是不可改变对象(一旦创建不能修改),而且是final的。
2. 创建的String对象存储在 constant String Pool.
3. 对String引用的每次修改都创建了一个新的String对象,这样在生成最终String对象过程中会生成很我中间String对象,这些中间String对象都会成为垃圾。所以在需要修改String内容的地方,使用StringBuffer或StringBuilder代替。
4. Java中的不可改变对象都是线程安全的,所以String对象不能同时被两个对象使用。
5. String对象不可改变的好处:它的hashcode稳定,使它成为一个快速的hashmap的key。
6. 当使用"+"连接两个字符串时,它的内部实现是使用StringBuffer或StringBuilder。
String demo = "hello";
// 上面的String对象存储在 constant String Pool,它的值不能修改
demo = "byte";
// "byte" String对象存储在 constant String Pool,被demo引用引用
// "hello" String对象仍然在 constant String Pool,但是失去了引用
StringBuffer
1. StringBuffer是可改变对象,对象创建后可以修改它的值而不创建新的对象。
2. StringBuffer对象存储在heap中。
3. StringBuffer中的方法都是synchronized,也就是说StringBuffer是线程安全的。因为线程安全,所以也影响了方法的性能,执行StringBuilder中的方法比StringBuffer要快。
4. 调用StringBuffer对象的toString()方法可以将StringBuffer对象转换为String。
5. 当需要String可改变且要求线程安全时使用StringBuffer。
StringBuilder
1. StringBuilder是StringBuffer的拷贝,但去除了synchronized。所以,StringBuilder与StringBuffer包含的方法相同,但StringBuilder不是线程安全的,同时,因为没有synchronized,所以StringBuilder中方法的执行速度远快于StringBuffer中的相同方法。
2. StringBuilder对象也保存的heap中,而且可以修改对象的值而不创建新的对象。
3. StringBuilder在jdk 1.5后出现,是StringBuffer的补充替代版本。而String和StringBuffer在jdk 1.0时就已出现。
4. 当需要String可改变且不要求线程安全时,使用StringBuilder。因为StringBuild中方法执行速度快于StringBuffer,所以优先使用StringBuilder。
String StringBuffer StringBuilder
Storage area constant string pool heap heap
modifiable No ( immutable ) Yes ( mutable ) Yes ( mutable )
thread safe Yes Yes No
performance Fast very slow Fast
- 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的区别?
- Android Camera拍照实现
- 基于QT-widget的电子词典实现
- 黑马程序员——Java基础---常用类--Object类,Scanner类,String类,StringBuffer类,StringBuilder类
- C++输入cin应用详解
- grunt(项目实践01)
- String StringBuffer StringBuilder的区别
- Android学习笔记(四十六):JSTL标签函数库
- 大一新生第一次写java程序,用System.currentTimeMillis() 获取当前时间
- JAVA多线程实现的三种方式
- U盘内容被病毒隐藏的解决方案
- 线段树 poj2482 Stars in Your Window
- CSS中那些不太常见的样式
- Android View滚动、拉伸到顶/底部弹性回弹复位
- 系统函数C字符串的实现(1):strlen