目录
ensureCapacity(int minimumCapacity)
我们知道String是一个不可变的类型的,是用final修饰的类。当我们new一个String的时候,比如String s = "abc",那么此时的"abc"就是不可改变的。但是可以进行如下的操作:
String s = "abc";
s = "ABC";
但这并不意味着这String是可变的,因为可变的只是s,它只是指向String的一个引用,这个引用可以指向另外一个字符串,而原字符串"abc"并没有变。因此当我们进行大量的字符串拼接操作的时候,我们一般不会这样做:
String s = "abc"
for(int i = 0; i<10000; i++){
s += String.valueOf(i);
}
因为这种情况下,会在内存中创建10000个不同的字符串,因此既消耗内存,也影响性能。因此,我们一般这样做:
StringBuilder s = new StringBuilder();
for(int i = 0; i<10000; i++){
s.append(String.valueOf(i));
}
它只会创建一个字符数组,然后在数组中添加String。下面介绍一下 StringBuilder。
StringBuilder是一个可变大小的字符序列,它继承了AbstractStringBuilder类。
StringBuilder()
可以看到,无参的构造函数是创建一个16个长度的字符数组。
作用:初始化。默认大小是16.
StringBuilder(int capacity)
创建一个长度为capacity的字符数组。
作用:初始化长度为capacity。
length()
作用:获取StringBuilder的长度。
capacity()
作用:获取StringBuilder的最大容量,也就是字符数组的长度。
ensureCapacity(int minimumCapacity)
下面是扩容方法:
作用:确保字符数组的长度大于或等于minimumCapacity。
接下来的所有方法都是调用父类AbstractStringBuilder的方法,后面不再说明。