String、StringBuffer和StringBuild的区别
来源:互联网 发布:订房软件 编辑:程序博客网 时间:2024/05/29 17:33
性能总结:不考虑线程安全前提下操作字符串:StringBuild性能最高,StringBuffer次之,String比较差.
StringBuffer和StringBuild在操作字符方面没有区别。唯一的区别是StringBuffer 是线程安全的,StringBuilder 为非线程安全的。
所以接下来我们就不单独讨论StringBuild。
字符操作方面区别:
String 对象是不可改变的。每次对String修改或赋值的时,都要在内存中创建一个新的字符串对象。在需要对字符串执行重复修改的情况下,创建新的 String 对象相关的系统开销可能会非常昂贵。
StringBuffer 在修改字符串时不会创建新的对象。例如,在需要对字符串执行重复修改(如:循环连接字符)的情况下,使用 StringBuilder 类可以提升性能。
比较函数方面区别:
String实现了equals和hashCode方法,所以,new String(“abc”).equals(new String(“abc”)的结果为true
StringBuffer没有实现equals和hashCode方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false
注意:将StringBuffer对象存储进Java集合类中时会出现问题
性能方面详细比较:
StringBuffer sb = new StringBuffer(); for (int i = 0; i < 100; i++) { sb.append(i); }
以上代码创建1个对象
String str = new String(); for (int i = 0; i < 100; i++) { str = str + i; }以上代码创建101个对象
如果你不相信创建对象耗时,你可以试试创建1亿个对象比较执行时间试试。
比较时间用System.currentTimeMillis()方法,这里我就不给大家实测了。
6 0
- String、StringBuffer和StringBuild的区别
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- Flex4+spring+hibernate+BlazeDS整合案例
- The value for the useBean class attribute is invalied
- getHibernateTemplate()和getSession()的区别
- Hibernate merge、update与saveOrUpdate方法的区别
- int与Integer的区别
- Hibernate discriminator-value用法
- RMI、Hessian、Burlap、Httpinvoker、WebService的比较
- 安装arm-linux-insight
- gethibernatetemplate的find方法大全
- Oracle的Union、Union_All、Intersect、Minus用法---小笔记
- Android的String用法
- 安装Qt时Basic XLib functionality test failed!错误解决方法
- Linux中error while loading shared libraries错误解决办法
- Windows环境下Oracle VM VirtualBox安装ubuntu
- 详解使用wsgen和wsimport开发WebService
- Android+push+notification方案比较
- C 语言随笔
- tilera netlib应用层协议栈-IP层实现方式
- Monkeyrunner学习之二(如何使用id去点击的方法)
- 行电1102 Constructing Roads
- 项目一(1)深复制体验
- String、StringBuffer和StringBuild的区别
- 自己动手写编辑器——Lumia Inspired by Atom
- Android-API
- 中断处理(串口中断)
- 极大似然估计
- OGRE(二)
- hdu1316 How Many Fibs?
- SQL语言集数据查询、数据操纵、数据定义和数据控制功能
- 第6周作业2-IF语句大显身手之成绩判断