StringBuffer和StringBuilder的扩容
发布时间:2020-12-15 07:26:22 所属栏目:Java 来源:网络整理
导读:在没有传参的情况下默认初始容量是16。 public StringBuffer() { super (16 ); } 有参数的情况下,初始容量是16+字符串的长度,并且是用append()方法追加的字符 public StringBuffer(String str) { super (str.length() + 16 ); append(str); } ? 它是这么
在没有传参的情况下默认初始容量是16。 public StringBuffer() { super(16); } 有参数的情况下,初始容量是16+字符串的长度,并且是用append()方法追加的字符 public StringBuffer(String str) { super(str.length() + 16); append(str); } ? 它是这么扩容的 int newCapacity = (value.length << 1) + 2;增加为自身长度的一倍然后再加2;这个时候如果还是放不下,那就直接扩容到它需要的长度 ?newCapacity = minCapacity; void expandCapacity(int minimumCapacity) { int newCapacity = value.length * 2 + 2; if (newCapacity - minimumCapacity < 0) newCapacity = minimumCapacity; if (newCapacity < 0) { if (minimumCapacity < 0) // overflow throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } value = Arrays.copyOf(value,newCapacity); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |