怎么实现SpringBuilder和StringBuffer源码解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
StringBuilder和StringBuffer都是继承自AbstractStringBuilder,只不过StringBuffer是线程安全的,使用synchronized关键字同步方法。
StringBuilder和StringBuffer操作的都是AbstractStringBuilder类中的char数组。
StringBuilder和StringBuffer的默认初始容量是16。
当使用append方法进行字符串拼接时,主要是对char数组的复制,同时要确保capacity的容量满足拼接的字符串大小。
ensureCapacityInternal方法会确保当前的char数组value够用,然后,会将字符串复制到char数组value中,同时count加上新增字符串的长度。
如果不够用就就重新复制一个数组。
新数组的容量,首先会将当前value容量翻倍再加2,如果还不够用就用minCapacity,返回新容量大小时,会判断有没有超过(Integer.MAX_VALUE - 8 = MAX_ARRAY_SIZE)。
最好比较一下toString方法,StringBuffer的toString会将value再复制到toStringCache一个char数组中,然后new一个字符串。
StringBuilder简单了,直接new一个字符串。
关于怎么实现SpringBuilder和StringBuffer源码解析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程之家行业资讯频道了解更多相关知识。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。