栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

浅谈String Builder

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈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类型的对象

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号