admin管理员组文章数量:1611953
在JAVA常用类中有StringBuilder与StringBuffer这两个用来处理字符串的类,其中有两个很常用的方法length()和capacity(),发现他们之间还是有一点区别的。
StringBuilder sbd = new StringBuilder("abcde");
StringBuilder sbd2 = new StringBuilder();
StringBuffer sbf = new StringBuffer("abcde");
StringBuffer sbf2 = new StringBuffer();
System.out.println(sbd.length());
System.out.println(sbd.capacity());
System.out.println(sbd2.length());
System.out.println(sbd2.capacity());
System.out.println(sbf.length());
System.out.println(sbf.capacity());
System.out.println(sbf2.length());
System.out.println(sbf2.capacity());
结果为:
5
21
0
16
5
21
0
16
所以,length()代表的是其中内容的长度,capacity()代表的是容器的大小。
PS:其中还发现一个小现象
StringBuilder sbd = new StringBuilder('a');
System.out.println(sbd.length());
System.out.println(sbd.capacity());
结果为:
0
97
如果将'a'换成"a",结果就正常了为:
1
17
跟到源码中看了一下,发现是调用了不同的构造器
public StringBuilder(int capacity) {
super(capacity);
} //传'a'时被转换成了int,所以length没有长度,而capacity长度是97
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
} //传"a"时是正常的字符串
本文标签: 方法StringBufferStringBuilderCapacitylength
版权声明:本文标题:StringBuilder与StringBuffer中的length()和capacity()方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728621902a1166460.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论