它是一个增强的String类,在长度可变上增强了。长度和内容都可变。
String是不可变的类型,即创建一个String对象后,就不能修改这个String,平常使用的”aa”+”bb”生成”aabb”这个过程中,实际是创建了三个String对象:”aa”, “bb”, “aabb”
StringBuffer是相对于String的一个可变的类型,StringBuffer可以在原对象上进行加长或缩短等修改操作。适用于需要大量连接字串或拼接处理字串的情况,相应的情况下就不宜使用String对象了。
常用方法
append//添加;在末尾添加
delete(int start, int end)//删除
insert(int offset, boolean b)//insert能在字符串的任意位置添加,而append只能在末尾
trimToSize()//将字符数组序列中,没有使用的元素删除
capacity()//显示容量
lenght()//显示长度
/**
* 1:定义一个StringBuilder的对象sb。打印输出当前对象的容量(可以容纳的字符数量)。
* 2:随机在sb中添加字符【a-z】【A-Z】50个。并打印输出 自定义方法实现。
* 3:再定义一个StringBuffer对象 buffer ,打印当前buffer容量。
* 将sb中的所有的大写字母全部移动至buffer 中,并打印sb中的剩余内容。和buffer 中的内容。
* @param args
*/
public static void main(String[] args) {
// 1:定义一个StringBuilder的对象sb。
StringBuilder sb = new StringBuilder();
System.out.println("sb的容量为:"+sb.capacity());//sb.length()
//2:随机在sb中添加字符【a-z】【A-Z】50个。并打印输出 自定义方法实现。
appendRandomChars1(sb);
//再定义一个StringBuffer对象 buffer ,打印当前buffer容量。
StringBuffer buffer = new StringBuffer();
System.out.println("buffer的容量为:"+buffer.capacity());
//asFDSa i=3
//将sb中的所有的大写字母全部移动至buffer 中,并打印sb中的剩余内容。和buffer 中的内容。
for(int i=0;i<sb.length();i++){
//将sb 中的字符挨个取出来,判断是否是大写
char c = sb.charAt(i);
if(c >= 'A' && c <='Z'){
sb.deleteCharAt(i);
buffer.append(c);
//删除一个字符后,后续的字符全部前移了一位,那么必须让i做一次减一的操作,才能保证所有的字符都得到判断
i--;
}
}
//
System.out.println("sb=="+sb);
System.out.println("buffer="+buffer);
}
//
public static void appendRandomChars1(StringBuilder sb){
String s = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
for (int i = 0; i <50; i++) {
int index = MyUtil.getRandomNumberOfRange(0, 52);
char c = s.charAt(index);
sb.append(c);
}
//打印输出
System.out.println("sb的容量:"+sb.capacity());
System.out.println("sb的长度:"+sb.length());
System.out.println(sb);
}
/**
* 随机在sb中添加字符【a-z】【A-Z】50个。并打印输出 自定义方法实现。
* 对StringBuilder对象随机添加字符
*/
public static void appendRandomChars(StringBuilder sb){
//产生50个字符
for(int i=0;i<50;i++){
//先随机确定产生 大写 或者小写
int bigOrSmall = MyUtil.getRandomNumberOfRange(0, 2);
if(bigOrSmall == 0){//大写区间
//随机产生大写区间的某个字符并添加到sb的末尾
char c = (char)MyUtil.getRandomNumberOfRange('A', 'Z'+1);
sb.append(c);
}else{//小写区间
//随机产生小写区间的某个字符并添加到sb的末尾
char c = (char)MyUtil.getRandomNumberOfRange('a', 'z'+1);
sb.append(c);
}
}
//打印输出
System.out.println("sb的容量:"+sb.capacity());
System.out.println("sb的长度:"+sb.length());
System.out.println(sb);
}