JAVA基础知识回顾-----StringBuffer详解-----随想随写
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA基础知识回顾-----StringBuffer详解-----随想随写,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2751字,纯文字阅读大概需要4分钟。
内容图文
StringBuffer
? ①StringBuffer的内容是可变的,在对StringBuffer的内容进行修改时,他
?? 不会产生新的对象,只是在原来的基础上进行修改;
? ②StringBuffer是线程安全的,同步,效率相对StringBuild来说比较低
? ③继承了AbstractStringBuilder类
? ③StringBuffer类里的常用方法解析(按字母排序):
???? a)方法一:构造方法
?????? ep1:
public StringBuffer() { super(16); } ep2: public StringBuffer(int capacity) { super(capacity); }
?????? ep3:
???
public StringBuffer(String str) { super(str.length() + 16); append(str); }
?
????? 作用:构造方法,创建StringBuffer对象,它不能直接像String那样
????? (比如:String s="Hello";)直接赋值,它需要经过构造方法来对一个
????? 对象进行赋值;
????? 解释:
?????
ep1:StringBuffer sb1=new StringBuffer();会为对象保留16个字符的扩展空间 ep2: StringBuffer sb2=new StringBuffer(24);创建容量大小为24个字符的对象 ep3:StringBuffer sb3=new StringBuffer("hello");根据String对象创建一个 StringBuffer对象,并会为这个对象额外的保留16个字符空间;
?
??? b)方法二:public synchronized StringBuffer append(String str)
??
//StringBuffer中 public synchronized StringBuffer append(String str) { super.append(str); return this; } //AbstractStringBuffer中 public AbstractStringBuilder append(String str) { if (str == null) str = "null"; int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this; }
?
????? 作用:这是StringBuffer的核心方法,字符串进行拼接时,采用append方法并不会
????? 创建一个新的StringBuffer的对象;
????? 解释:如果追加的数据为一个null,则直接在源对象后面追加null即可;
????? 如果不为空,则先扩大容量,然后改变源对象的值,最后改变源对象的大小
???? (这个大小指调用length()方法后返回的值)
?? c)方法三:
?????
//StringBuffer中 public synchronized StringBuffer insert(int offset, String str) { super.insert(offset, str); return this; } //AbstractStringBuffer中 public AbstractStringBuilder insert(int offset, String str) { if ((offset < 0) || (offset > length())) throw new StringIndexOutOfBoundsException(offset); if (str == null) str = "null"; int len = str.length(); ensureCapacityInternal(count + len); System.arraycopy(value, offset, value, offset + len, count - offset); str.getChars(value, offset); count += len; return this; }
?
??? 作用:在指定位置(offset)插入字符串;
??? 解释:先判断参数offset是否为合法下标,如果合法,则执行以下操作,否则,
??? 抛出String下标越界异常(StringIndexOutOfBounsException);
??? 再判断插入的是否为null,如果为null值,则将str="null",准备插入StringBuffer
??? 对象中,如果不为空,则先扩大容量,再插入值,最后改大小,返回插入后的对象值;
?? ④测试String和StringBuffer修改内容的效率
ep1: String tempstr = "abc"; int times = 5000; long lstart1=System.currentTimeMillis(); String str =""; for(int i=0;i<times;i++){ str+=tempstr; } long lend1=System.currentTimeMillis(); long time1 = (lend1-lstart1); System.out.println(time1); //结果:32 ep2: String tempstr = "abc"; int times = 5000; long lstart1=System.currentTimeMillis(); StringBuffer strBuffer =new StringBuffer(); for(int i=0;i<times;i++){ strBuffer.append(tempstr); } long lend1=System.currentTimeMillis(); long time1 = (lend1-lstart1); System.out.println(time1); } //结果:0
原文:http://ye-wolf.iteye.com/blog/2303175
内容总结
以上是互联网集市为您收集整理的JAVA基础知识回顾-----StringBuffer详解-----随想随写全部内容,希望文章能够帮你解决JAVA基础知识回顾-----StringBuffer详解-----随想随写所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。