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

原文地址:https://www.cnblogs.com/liyihua/p/12181513.html

时间: 2024-10-10 05:07:09

Java StringBuilder类的相关文章

JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类

一StringBuilder类 (1)认识StringBuilder类 在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或 StringBuffer类存储字符串,在需 要频繁对字符串进行修改操作时使用StringBuilder的效率比String要高. String 类具有是不可变性.如: 运行结果: 从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld".当频繁操作字符串时,就会额 外产生很多临时变量.使用S

【JAVA中String、StringBuffer、StringBuilder类的使用】

一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: 1 public class StringDemo 2 { 3 public static void main(String args[]) 4 { 5 StringDemo1(); 6 7 } 8 public static void StringDemo1() 9 { 10 String str1="abcd"; 11

一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对比

本文主要介绍String类.StringBuffer类.StringBuilder类的区别  : 一.概述 (一)String 字符串常量,但是它具有不可变性,就是一旦创建,对它进行的任何修改操作都会创建一个新的字符串对象. (二)StringBuffer 字符串可变量,是线程安全的,和StringBuilder类提供的方法完全相同. 区别在于StringBuffer每个方法中前面添加了"synchronized",保证其是线程安全的. (三)StringBuilder 字符串可变量,

java ——String , StringBuffer, StringBuilder类

一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: “==”  比较两个对象是否引用同一实例 public class StringDemo { public static void main(String args[]) { StringDemo1(); } public static void StringDemo1() { String str1="abcd"; Str

Java StringBuffer和StringBuilder类

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象. StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问). 由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBui

重温java中的String,StringBuffer,StringBuilder类

任何一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类常用的有 3 个: String.StringBuffer.StringBuilder. 它们的异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer.StringBuilder 长度是可变的; 3) StringBuffer 是线程安全的, StringBuilder 不是线程安全的. String 类已在上一篇随笔 小瓜牛

Java StringBuffer 和 StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象. StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问). 由于 StringBuilder 相较于 StringBuffer 有速度优势,

Java基础——数组应用之StringBuilder类和StringBuffer类

一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的

一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作都会创建一个新的字符串对象. (二)StringBuffer 字符串可变量,是线程安全的,和StringBuilder类提供的方法全然同样. 差别在于StringBuffer每一个方法中前面加入了"synchronized",保证其是线程安全的. (三)StringBuilder 字符串可