Java StringBuilder类的简单学习

StringBuilder的原理

String类

  1. String类

    1. 字符串是常量,它们的值在创建之后不能更改

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

      private final byte[] value;
      
  2. 进行字符串的相加,内存中就会多字符串,占用空间多,效率低下

    1. 如:"a" + "b" + "c" = "abc"

      相加之前:"a"     "b"     "c"     有三个字符串了("a", "b", "c")
      两个相加后:"ab"     "c"            这里有一个新的字符串生成("ab")
      三个相加后:"abc"                   这里又有一个新的字符串生成("abc")
      
  3. 结论:三个字符串相加,就有5个字符串占用空间,导致效率低下

StringBuilder类

  1. StringBuilder类

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

    2. 它的底层也是一个数组,但是没有个final修饰, 可以改变长度

      byte[] value = new byte[16];
      
  2. 与String不同的是,StringBuilder能够对其中的字符串进行各种操作

  3. StringBuilder的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。

  4. 如: "a" + "b" + "c" = "abc"

    这里可以直接在字符串的缓冲区操作字符串,数组长度默认是16,可随实质进行增长

  5. 结论:StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。

StringBuilder的构造方法

说明

  1. Java.Lang.StringBuilder类 字符串緩冲区,可以提高字符串的效率
  2. 构造方法:
    1. StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
    2. StringBuilder(string str) 构造一个字符串生成器,并初始化为指定的字符串内容。

代码理解

public class Demo01StringBuilder {
    public static void main(String[] args) {
        // 无参构造方法
        StringBuilder stringBuilder1 = new StringBuilder();

        // 加参构造方法
        StringBuilder stringBuilder2 = new StringBuilder("我是有参数的构造方法");

        System.out.println("stringBuilder1:" + stringBuilder1);
        System.out.println("stringBuilder2:" + stringBuilder2);
    }
}
输出结果:
stringBuilder1:
stringBuilder2:我是有参数的构造方法

StringBuilder常用的方法

append()方法

作用:添加任意类型数据的字符串形式,并返回当前对象自身

public class DemoStringBuilderAppend {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder();
        System.out.println("添加之前stringBuilder:" + stringBuilder);

        stringBuilder.append("Cross Fire");
        System.out.println("添加之后stringBuilder:" + stringBuilder);
    }
}
输出结果:
添加之前stringBuilder:
添加之后stringBuilder:Cross Fire

toString()方法

说明

  1. StringBuilder和String可以相互转换

  2. string 转换为 StringBuilder:

    可以使用 StringBuilder的构造方法StringBuilder( string str)构造一个字符串生成器,并初始化为指定的字符串内容。

  3. StringBuilder 转换为 string:

    可以使用 StringBuilder中的 toString方法public String toString():将当前 StringBuilder对象转换为 string对象。

代码理解

public class DemoStringBuilderToString {
    public static void main(String[] args) {
        String string1 = "Hello";
        System.out.println("string1:" + string1);

        // string 转换为 StringBuilder
        StringBuilder stringBuilder = new StringBuilder(string1);
        System.out.println("string 转换为 StringBuilder:" + stringBuilder);

        // StringBuilder 转换为 string
        String string2 = stringBuilder.toString();
        System.out.println("StringBuilder 转换为 string:" + string2);
    }
}
输出结果:
string1:Hello
string 转换为 StringBuilder:Hello
StringBuilder 转换为 string:Hello
posted @ 2020-01-11 23:20  LeeHua  阅读(369)  评论(0编辑  收藏  举报