StringBuilder的原理以及构造方法和append方法

StringBuilder的原理

String类

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

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

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

private final byte[] value;

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

 

 像这样执行字符串拼接他会产生5个字符串

 

StringBuilder类

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

底层也是一个数组,但是没有被final修饰,可以改变长度。byte[] bytes = new byte[16];

StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了StringBuilder的容量,会自动扩容









StringBuilder
的构造方法和append方法
构造方法:
public StringBuilder():构造一个空的StringBuilder容器
public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去

    /**
     * 构造方法:
     *      public StringBuilder():构造一个空的StringBuilder容器
     *      public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去
     */
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
        System.out.println("无参:"+stringBuilder);
        StringBuilder stringBuilder1 = new StringBuilder("abc");
        System.out.println("有参:"+stringBuilder1);
    }

StringBuilder类的成员方法:
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身
参数:可以是任意的数据类型
    /**
     *   StringBuilder类的成员方法:
     *      public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身
     *      参数:可以是任意的数据类型
     */
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
//        StringBuilder builder = stringBuilder.append("abc");
//        System.out.println(stringBuilder);
//        System.out.println(builder);
//        System.out.println(stringBuilder==builder);//为true  两个对象是同一个对象
        //调用append方法无需接收返回值
        stringBuilder.append("abc");
        stringBuilder.append(123);
        stringBuilder.append(true);
        stringBuilder.append(1.1);
        stringBuilder.append('a');
        System.out.println(stringBuilder);
    }
 
posted @ 2022-07-04 17:00  xjw12345  阅读(573)  评论(0编辑  收藏  举报