package com.Lucky.OftenClass;
/* 可变字符串:可以采用追加方法
StringBuffer: JDK1.0提供的类 线程安全,做线程同步检查【速度慢】
StringBuilder[推荐使用]: JDK1.5提供的类 线程不安全,不做线程同步检查【速度快】
区别:StringBuffer类的方法会加上 Lock【锁】 关键字:synchronized 同步
*/
public class StringBufferOrBuilder {
public static void main(String[] args) {
//创建对象
StringBuffer buffer=new StringBuffer(); //创建时分配空间: str.length() + 16
System.out.println(buffer.capacity());//打印底层数组的长度
StringBuilder builder=new StringBuilder("start:");
//操作【StringBuffer分配的空间不够再扩容】
System.out.println("-------append--------------");
buffer.append("唯易人生");
buffer.append("是");
buffer.append("YYDS的代表");
builder.append("唯易人生");
builder.append("是");
builder.append("YYDS的代表");
//打印【隐藏代码:自动将StringBuffer或StringBuilder类型转换成String】
System.out.println(buffer);
System.out.println(builder);
System.out.println("-------insert--------------");
StringBuffer test1=buffer.insert(0,"首先");
StringBuilder test2=builder.insert(0,"首先");
//打印【隐藏代码:自动将StringBuffer或StringBuilder类型转换成String】
System.out.println(test1);
System.out.println(test2);
System.out.println("-------修改--------------");
StringBuffer test3= buffer.replace(0,10,"NB");
StringBuilder test4= builder.replace(0,12,"NB");
//打印【隐藏代码:自动将StringBuffer或StringBuilder类型转换成String】
System.out.println(test3);
System.out.println(test4);
System.out.println("-------delete--------------");
// buffer.deleteCharAt(2);//删除索引为2的字符
StringBuffer test5=buffer.delete(0,5);
StringBuilder test6=builder.delete(0,6);
//打印【隐藏代码:自动将StringBuffer或StringBuilder类型转换成String】
System.out.println(test5);
System.out.println(test6);
System.out.println("-----//拓展:reverse:反转--------");
System.out.println(test5.reverse());
System.out.println(test6.reverse());
}
}
习题:
package com.Lucky.OftenClass;
/*
StringBuffer习题:
*/
public class StringBufferTest {
public static void main(String[] args) {
//创建StringBuffer对象
StringBuffer bufferFri = new StringBuffer("A");
StringBuffer bufferEnd = new StringBuffer("B");
//创建
String newStr=new String("good");
char[] newChar={'a','b','c'};
//调用test
test(bufferFri,bufferEnd);
System.out.println(bufferFri);
System.out.println(bufferEnd);
//调用test1
test1(newStr,newChar);
System.out.println(newStr); //good
System.out.println(newChar); //gbc
}
public static void test(StringBuffer buffer1,StringBuffer buffer2){
buffer1.append(buffer2); //在原来的基础上追加B
buffer2=buffer1; //赋值,是改变在栈帧上面的地址,并没有实际上改变存在堆中的值
}
public static void test1(String str,char[] chars){
str="yyds"; //重新创建String对象
chars[0]='g'; //更改索引为0的数据
}
}