StringBuilder类

1.StringBuilder类的概念了解:

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

 

先来说一下String类:

字符串是常量:它们的值在创建之后不能更改。

字符串的底层是是一个被final修饰的数组,不能改变,是一个常量。

private final byte[ ] value;

 

进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。

String s = "a" + "b" + "c" = "abc";

"a","b","c" 3个字符串

String s : "a"+"b"+"ab" 1个字符串

“ab"+"c" "abc" 1个字符串

 

StringBuilder类

字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)

底层也是一个数组,但是没有被修饰,可以改变长度。

 

byte[] value = new byte[16];

 

"a"+"b"+"c" = "abc"

 

"a"

"b"

"c"

   

                0               1                    2                  3                4                      5-16

 

StringBuilder在内存中始终是一个数组,占用空间太少,效率高,

如果超出了StringBuilder的容量,会自动的扩容。

2.StringBuilder类的构造方法。

 

java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率。

构造方法:

StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。

StringBuilder(String Str)构造一个字符串生成器,并初始化为指定的字符串内容。

 

public class Demo02StringBuilder {
    public static void main(String[] args) {
        //空参数构造方法
        StringBuilder bu1 = new StringBuilder();
        System.out.println("bu1 = " + bu1);//bu1:""

        //带字符串的构造方法
        StringBuilder bu2 = new StringBuilder("abc");
        System.out.println("bu2 = " + bu2);//bu2:abc
    }

}

 

 

3.StringBuilder的常用方法:

 

①public StringBuilder oppend(...): 添加任意类型数据字符串形式,并返回当前对象自身。

链式编程初试:

public class Demo03StringBuilder {
    public static void main(String[] args) {
        //创建StringBuilder对象
        StringBuilder bu1 = new StringBuilder();
        //使用append方法往StringBuilder中添加数据
        //append方法返回的是this,调用方法的对bu,this == bu
        StringBuilder bu2 = bu1.append("abc");
        System.out.println(bu1);  //"abc"
        System.out.println(bu2);  //"abc"
        System.out.println(bu1 == bu2); //比较的是地址 true


        //使用append方法无需接受返回值
        bu1.append("abc");
        bu1.append(1);
        bu1.append(true);
        bu1.append(9.9);
        bu1.append("!");
        bu1.append("中国人");
        System.out.println(bu1); //abcabc1true9.9!中国人


        /*
        链式编程:方法返回值是一个对象,可以继续调用对象方法
         */
       System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());

        bu1.append("abc").append(1).append(false).append(8.8).append("中");
        System.out.println(bu1);  //abcabc1true9.9!中国人abc1false8.8中
    }
}

②StringBuilder中的toString方法;

 

StringBuilder和String可以相互转换:

String -> StringBuilder: 可以使用Stringbuilder的构造方法

StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。

StringBuilder -> String : 可以使用StringBuilder中的toString方法

public String toString():将当前StringBuilder对象转换为String对象

public class Demo04StringBuilder {
    public static void main(String[] args) {
        //String -> StringBuilder
        String str = "Jason";
        System.out.println("str = " + str);

        StringBuilder bu = new StringBuilder(str);
        //往StringBuilder中添加数据
        bu.append("你好");
        System.out.println("bu = " + bu);

        //StringBuilder -> String
        String s = bu.toString();
        System.out.println("s = " + s);


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值