Java常用类之StringBuffer和StringBuilder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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());
    }
}

  

 

习题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 @   唯易人生  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示