我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder
我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder
注:基于jdk11
AbstractStringBuilder
可变的抽象字符串创建类
实现了如下几个接口:
1. Appendable 此接口的实现类可以拼接字符序列或单个字符。不保证线程安全,由实现类实现是否线程安全。使用java.util.Formatter格式化,必须为Appendable实现类 2. CharSequence
几个重要的成员变量:
/** * 字符串存储数据的字节数组,初始化的时候可以指定容量,默认为16 */ byte[] value; /** * 编码 0为Latin1 1为Utf-16 */ byte coder; /** * 当前字符串实际长度 */ int count; private static final byte[] EMPTYVALUE = new byte[0]; /** * byte [] 最大长度限制,超过VM限制长度会导致OOM */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
几个重要的方法:
1. 返回当前字符串实际长度,count public int length() { return count; } 2. 返回字符串容量 public int capacity() { return value.length >> coder; } 3. 扩容,字节数组拷贝 public void ensureCapacity(int minimumCapacity) { if (minimumCapacity > 0) { ensureCapacityInternal(minimumCapacity); } } private void ensureCapacityInternal(int minimumCapacity) { // overflow-conscious code int oldCapacity = value.length >> coder; if (minimumCapacity - oldCapacity > 0) { value = Arrays.copyOf(value, newCapacity(minimumCapacity) << coder); } } private int newCapacity(int minCapacity) { // overflow-conscious code int oldCapacity = value.length >> coder; int newCapacity = (oldCapacity << 1) + 2; if (newCapacity - minCapacity < 0) { newCapacity = minCapacity; } int SAFE_BOUND = MAX_ARRAY_SIZE >> coder; return (newCapacity <= 0 || SAFE_BOUND - newCapacity < 0) ? hugeCapacity(minCapacity) : newCapacity; } private int hugeCapacity(int minCapacity) { int SAFE_BOUND = MAX_ARRAY_SIZE >> coder; int UNSAFE_BOUND = Integer.MAX_VALUE >> coder; if (UNSAFE_BOUND - minCapacity < 0) { // overflow throw new OutOfMemoryError(); } return (minCapacity > SAFE_BOUND) ? minCapacity : SAFE_BOUND; }
StringBuffer
线程安全的AbstractStringBuilder实现类
几个重要的方法:
1. toString() 使用缓存机制,在第一次调用toString()的时候会将实时生成的字符串拷贝保存在toStringCache中,下次调用直接返回,如有变化,toStringCache置空
StringBuilder
非线程安全的AbstractStringBuilder实现类
几个重要的方法:
1. toString() 实时创建字符串拷贝返回
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Gartner:区块链是物联网的完美搭档
云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! Gartner相信区块链技术是物联网的完美搭档,将帮助它克服一些最大问题。 Gartner相信区块链技术是物联网的完美搭档,将帮助它克服一些最大问题。 区块链是安全的代名词。另一方面,物联网因遭受严重漏洞而闻名,导致反复出现重大漏洞和网络攻击。 Gartner在一篇博客中着重介绍了一项名为“物联网采用者拥抱区块链”的调查的主要发现,Gartner认为这两种新兴技术是完美的搭档。 区块链正进入Gartner炒作周期的所谓“幻灭谷底”——这意味着最初的炒作已经消退,人们膨胀的预期已经变成失望。然而,接下来是“启蒙的斜坡”,在那里,区块链技术以更现实的期望被采用。 Gartner指出,美国75%的物联网技术采用者已经采用或计划在2020年底前采用区块链。 该研究表明,制药、能源、医疗保健和运输是采用区块链的领先行业。 Gartner副总裁兼杰出分析师Avivah Litan写道: “区块链网络已经成为一项...
- 下一篇
2019年苹果表现如何?读完这10个故事就明白了
2019 年,苹果发生了一些不大不小的事,一年结束之时,我们有必要温习一下。整个2019 年,苹果没有出现什么丑闻,在全球大变局中也坐也安稳。但没有超凡入圣的企业,即使是苹果也会犯错。 总体来看,苹果有 5 个地方做得不错,也有 3 个地方犯了错。先来说说做得对的 5 个地方:第一个,手机摄像头进步,跟上行业最高标准;第二个,将 iPad 与 iOS 分开,推出 iPadOS;第三个,做出一些牺牲,让手机续航时间延长;第四个,与高通和解;第五个,用新广告技术为行业树立典范。也有3个做得不好的地方:第一个,Siri 和HomePod 仍然平庸;第二个,iPhone 定价还是有点高,市场需求低迷;第三个,AirPower 夭折。 如果你想进一步了解 2019 年的苹果,应该读一下这 10 个故事: 推出一大堆新品 早在2019年开始之前,苹果CEO库克就向粉丝们承诺,说2019年全年都会有重量级产品推出。果不其然,在这一年里,苹果推出如下产品: iPhone 11 、Apple Watch Series 5(搭配ECG App)、信用卡、新 AirPods、 AirPods Pro 、七代...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker快速安装Oracle11G,搭建oracle11g学习环境