String StringBuffer和StringBuilder的区别
2015-08-14 10:33
543 查看
String 和StringBuffer的区别
J***A平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。String类表示内容不可改变的字符串。而StringBuffer类表示内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。接着要举一个具体的例子来说明,我们要把1到100的所有数字拼起来,组成一个串。
StringBuffer sbf = new StringBuffer(); for(int i=0;i<100;i++) { sbf.append(i); }
上面的代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了101个对象。
String str = new String(); for(int i=0;i<100;i++) { str = str + i; }
在讲两者区别时,应把循环的次数搞成10000,然后用endTime-beginTime来比较两者执行的时间差异,最后还要讲讲StringBuilder与StringBuffer的区别。
String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。
StringBuffer与StringBuilder的区别
StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。相关文章推荐
- 在flash builder里全局搜索里如何“全字匹配”搜索
- Havok_2014-1-0_Pc_Xs_User_Guide(2.3.3-碰撞监听器)
- 认识Require
- 如何查看windows系统UUID
- iOS_UITableView 编辑(cell的插入, 删除, 移动)
- android 二维码制作,显示到UI,并保存SD卡,拿来就能用!!
- android 二维码制作,显示到UI,并保存SD卡,拿来就能用!!
- hdu 5301 Buildings
- 创建型模式:建造者模式(Builder Pattern)
- Havok_2014-1-0_Pc_Xs_User_Guide(2.3.2-一般监听器)
- UITextField-设置大全-placeholder左上角显示
- hdu - 3836 Equivalent Sets(强连通)
- popupwindow实现炫酷动画UI
- SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER(0xC0202009)
- systemverilog中$value$plusargs的用法
- POJ 3080 Blue Jeans
- Windows Server 2016 build 10514系统截图曝光
- java.lang.IllegalArgumentException: Illegal character in query at index ...解决办法
- Value Stewardship Over Showmanship
- UINavigationBar的系统渲染方式