zoukankan      html  css  js  c++  java
  • Java StringBuilder类

    StringBuilder的原理

    String类
            字符串是常量,它们的值在创建之后不能更改
            字符串的底层是一个被final修饰的数组,不能改变
            private final byte[] value;
    
    进行字符串的相加,内存中就会多字符串,占用空间多,效率低下
    如:
        "a" + "b" + "c" = "abc"

    相加之前 "a" "b" "c" 就有三个字符串了("a", "b", "c")
    两个相加后
    "ab" "c" 这里有一个新的字符串生成("ab")
    三个相加后
    "abc" 这里又有一个新的字符串生成("abc")
    结论: 三个字符串相加,就有5个字符串占用空间,导致效率低下
    StringBuilder类
                   字符串缓冲区,可以提高字符串的操作效率(可以看成是一个长度可以变化的字符串)
                   它的底层也是一个数组,但是没有个final修饰, 可以改变长度
                   byte[] value = new byte[16];
    与String不同的是,StringBuilder能够对其中的字符串进行各种操作 StringBuilder的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。
    如:
    "a" + "b" + "c" = "abc" 这里可以直接在字符串的缓冲区操作字符串,数组长度默认是16,可随实质进行增长 结论: StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。

    StringBuilder的构造方法

    说明

    /**
     * java.Lang.StringBuilder类        字符串緩冲区,可以提高字符串的效率
     * 构造方法:
     * StringBuilder()                  构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
     * 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()方法

    说明:

    /**
     * StringBuilder和String可以相互转换
     * string 转换为 StringBuilder:
     *          可以使用 StringBuilder的构造方法StringBuilder( string str)构造一个字符串生成器,并初始化为指定的字符串内容。
     * 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
  • 相关阅读:
    english note(6.3 to 6.8)
    english note(6.2 to 5.30)
    Lambda表达式
    Python Software Foundation
    eval(input())
    北航操作系统实验2019:Lab4-1代码实现参考
    北航操作系统实验2019:Lab4-1流程梳理
    面向对象设计与构造2019 第二单元总结博客作业
    面向对象设计与构造2019 第一单元总结博客作业
    Java代码度量分析工具:Designite简介
  • 原文地址:https://www.cnblogs.com/liyihua/p/12181513.html
Copyright © 2011-2022 走看看