浅谈String Builder

定义

        一个用来高效拼接字符串的类。但线程不安全,底层和String一样都是char[]  数组。默认是16位,可以扩容。扩容的方式是原来的*2+2.

所属包

        java.lang;

构造方法

        有参构造(传入字符串String str)与无参构造

public StringBuilder();

无参构造

StringBuilder a = new StringBuilder();

无参构造创建对象



public StringBuilder(String str);

有参构造

StringBuilder b = new StringBuilder("dd"); 

有参构造创建对象

 StringBuilder中的一些常用方法

        StringBuilder     append(Object obj);:进行拼接操作

StringBuilder b = new StringBuilder();
用无参构造创建StringBuilder的对象
		
		b.append("aa");
		b.append("bb");
		b.append("cc");
拼接"aa","bb","cc"
		System.out.println(b);

         输出结果为:

 

         String     toString:将StringBuilder对象转换为String对象

StringBuilder b = new StringBuilder("dd");
用无参构造创建StringBuilder的对象
		
		b.append("aa");
		b.append("bb");
		b.append("cc");
在"dd"上拼接"aa","bb","cc"
		System.out.println(b);

        String str = b.toString();
将当前StringBuilder对象转换为String对象
		System.out.println("----------");
		System.out.println(str);

        输出结果 :

        int      length();查看对象的长度

StringBuilder b = new StringBuilder();
用无参构造创建StringBuilder的对象
		
		b.append("aa");
		b.append("bb");
		b.append("cc");
拼接"aa","bb","cc"
		System.out.println(b);
    
        int len = b.length();
查看对象的长度
        System.out.println("----------");
		System.out.println(len);

        输出结果:

         StringBuilder delete(int start,int end);清空从start位置开始到end位置结束的数据

StringBuilder b = new StringBuilder();
用无参构造创建StringBuilder的对象
		
		b.append("aa");
		b.append("bb");
		b.append("cc");
拼接"aa","bb","cc"
		System.out.println(b);
    
        int len = b.length();
查看对象的长度
        System.out.println("----------");
		System.out.println(len);
       
删除索引值0-2的元素
        b.delete(0, 2);
		System.out.println("----------");
		System.out.println(b);

        输出结果:

        StringBuilder reverse();把元素翻转

StringBuilder b = new StringBuilder("dd");
用无参构造创建StringBuilder的对象
		
		b.append("aa");
		b.append("bb");
		b.append("cc");
在"dd"上拼接"aa","bb","cc"
		System.out.println(b);

        System.out.println(“--------------”);
        b.reverse();
        System.out.println(b);

        输出结果

String中的“+”也可以进行字符串的拼接,既然如此为什么又要有StringBuilder方法?

        首先,String的底层是StringBuilder,进行“+”操作时,会创建一个StringBuilder对象,用append去进行拼接,再用toString转化成String。

        也可以理解为,创建一个String类型的对象

String  str  =  “aaa”;

        这样写的话是将它存到了字符串常量池中,如果要用“+”来进行拼接操作。

String  str  =  “aaa”;
str = str+“bbb”;

        因为String不会被改变,他会首先在常量池中寻找,是否有aaabbb存在,如果存在,则直接将新建的对象地址值直接指向该块区域,如果不存在,则重新保存一个aaabbb,但此时str的地址值已经指向了aaabbb。

        总之每进行一次单等赋值操作,底层就会新开一个空间。比较浪费内存。

        除非这么写    

        String str = "aa";
		
		str = str+"cc"+"dd"+"ee";

         如果这么写,底层只创建了一个StringBuilder类型的对象

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值