java.lang.StringBuilder和java.lang.StringBuffer
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java.lang.StringBuilder和java.lang.StringBuffer,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
这两个类都是继承自AbstractStringBuilder,AbstractStringBuilder有两个成员属性
1 char [] value; 2 int count;
前者用于存储字符串,后者用于统计实际使用了多少位,也就是实际存入字符串长度。当new一个StringBuilder或者StringBuffer的时候,默认capacity为16,也即声明出一个16大小的字符数组,此时count=0,value.length=16。
1 public StringBuilder() // 初始char[]长度为162public StringBuffer() // 初始char[]长度为1634public StringBuilder(String str) // 初始char[]长度为str.length+165public StringBuffer(String str) // 初始char[]长度为str.length+16
在StringBuilder中基本上自身并没有重新定义什么方法,都是通过super调用的父类AbstractStringBuilder中定义的方法。
在StringBuffer中情况类似,基本上也没有重新定义什么方法,也都是调用父类AbstractStringBuilder中的方法,不过调用的时候方法都是加上了synchronzied,增加了同步锁保证线程安全。在方法前面加上synchronized作用对象是调用该方法的对象实例。
此外StringBuffer中增加了一个私有成员变量:
1 private transient char[] toStringCache
transient短暂的意思,是个关键字,用它声明的实例变量,其值不需要维持,换言之序列化的时候不会参与序列化过程。
// StringBuilder public String toString() { // Create a copy, don‘t share the array return new String(value, 0, count); } // StringBufferpublicsynchronized String toString() { if (toStringCache == null) { toStringCache = Arrays.copyOfRange(value, 0, count); } returnnew String(toStringCache, true); }
在toString方法中,StringBuffer是将内容拷贝到toStringCache,然后再构造String。toStringCache在任何修改都会被清空置为null。
下面直接看下AbstractStringBuilder类的方法。
1 public void ensureCapacity(int minimumCapacity)
该方法用于扩大value的容量,minimumCapacity如果大于value.length则newCapacity = max{value.length*2 + 2, minimumCapacity},如果newCapcity > MAX_ARRAY_SIZE则最终的capacity = max{minimumCapacity, MAX_ARRAY_SIZE}。其中MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8 。
在类中定义了各种append方法,如果append方法的参数为null的时候,append结果是将“null”字符串加到现有字符数组后面,而不是什么都不加。如果append(boolean),则是将“true”或者“false”添加到现有字符数组的最后。
AbstractStringBuilder主要定义的是各种append和insert方法。难度都不大,这里不赘述了~~
原文:http://www.cnblogs.com/snowater/p/7652558.html
内容总结
以上是互联网集市为您收集整理的java.lang.StringBuilder和java.lang.StringBuffer全部内容,希望文章能够帮你解决java.lang.StringBuilder和java.lang.StringBuffer所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。