全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
String和StringBuffer的区别String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。在java中有3个类来负责字符的操作。 1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立,StringBuffer sb = new StringBuffer();note:不能通过付值符号对他进行付值. sb = welcome to here!;/error对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中付值的时候可以通过它的append方法.sb.append(hello);字符串连接操作中StringBuffer的效率要比String高:String str = new String(welcome to );str += here;的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后再将StringBuffer toSting();这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.看看以下代码:将26个英文字母重复加了5000次,1. Stringtempstr=abcdefghijklmnopqrstuvwxyz;2. inttimes=5000;3. longlstart1=System.currentTimeMillis();4. Stringstr=;5. for(inti=0;itimes;i+)6. str+=tempstr;7. 8. longlend1=System.currentTimeMillis();9. longtime=(lend1-lstart1);10. System.out.println(time);可惜我的计算机不是超级计算机,得到的结果每次不一定一样一般为 46687左右。也就是46秒。我们再看看以下代码1. Stringtempstr=abcdefghijklmnopqrstuvwxyz;2. inttimes=5000;3. longlstart2=System.currentTimeMillis();4. StringBuffersb=newStringBuffer();5. for(inti=0;itimes;i+)6. sb.append(tempstr);7. 8. longlend2=System.currentTimeMillis();9. longtime2=(lend2-lstart2);10. System.out.println(time2);得到的结果为 16 有时还是 0所以结论很明显,StringBuffer 的速度几乎是String 上万倍。当然这个数据不是很准确。因为循环的次数在100000次的时候,差异更大。不信你试试。根据上面所说:str += here;的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后再将StringBuffer toSting();所以str += here;可以等同于StringBuffer sb = new StringBuffer(str);sb.append(here);str = sb.toString();所以上面直接利用+来连接String的代码可以基本等同于以下代码1. Stringtempstr=abcdefghijklmnopqrstuvwxyz;2. inttimes=5000;3. longlstart2=System.currentTimeMillis();4. Stringstr=;5. for(inti=0;itimes;i+)6. StringBuffersb=newStringBuffer(str);7. sb.append(tempstr);8. str=sb.toString();9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 许昌市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 2025标准写字楼租赁合同格式范本
- 2025购物中心物业管理合同模板
- 关于绿色食品的社会实践试题及答案
- 音美室工作计划及试题及答案
- 学校变电站运行维护试题及答案
- 医疗器械维修人员培训试题及答案
- 2025-2030智慧酒店创业项目融资模式设计及商业机会预判文件
- 2025年日语科目一考试题及答案
- 2025-2030智慧能源环境监测行业市场供需动态绿色环保与投资评估规划
- 仲利国际租赁在线测试答案
- 2025年广东省深圳市检察机关招录劳动合同制司法辅助人员综合素质测试练习题及答案
- 2025公安机关人民警察(高级)执法资格证考试模拟试题及答案
- 煤矿生产设备及材料查验制度
- 市监局春季业务知识培训课件
- 2025年国家公务员考试【申论】真题模拟试题(行政执法卷)含答案
- 盐场营销方案
- 学生核辐射知识培训课件
- 医疗废物与废水知识培训课件
- 2024年成人高等考试《医学综合》(专升本)试题真题及答案
- GB/T 5657-2013离心泵技术条件(Ⅲ类)
评论
0/150
提交评论