Java常用类之StringBuffer和StringBuilder

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的数据
    }


}

  

posted @ 2022-11-24 16:42  唯易人生  阅读(21)  评论(0)    收藏  举报