StringBuilder与StringBuffer中的length()和capacity()方法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > StringBuilder与StringBuffer中的length()和capacity()方法

StringBuilder与StringBuffer中的length()和capacity()方法

 2014/7/8 0:43:14  JhonStryker  程序员俱乐部  我要评论(0)
  • 摘要:在JAVA常用类中有StringBuilder与StringBuffer这两个用来处理字符串的类,其中有两个很常用的方法length()和capacity(),发现他们之间还是有一点区别的。StringBuildersbd=newStringBuilder("abcde");StringBuildersbd2=newStringBuilder();StringBuffersbf=newStringBuffer("abcde");StringBuffersbf2=newStringBuffer(
  • 标签:方法

?

在JAVA常用类中有StringBuilder与StringBuffer这两个用来处理字符串的类,其中有两个很常用的方法length()和capacity(),发现他们之间还是有一点区别的。

?

?

class="java">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"时是正常的字符串

?

发表评论
用户名: 匿名