Java StringBuilder类的简单学习
StringBuilder的原理
String类
-
String类
-
字符串是常量,它们的值在创建之后不能更改
-
字符串的底层是一个被final修饰的数组,不能改变
复制
private final byte[] value;
-
-
进行字符串的相加,内存中就会多字符串,占用空间多,效率低下
-
如:"a" + "b" + "c" = "abc"
复制
相加之前:"a" "b" "c" 有三个字符串了("a", "b", "c") 两个相加后:"ab" "c" 这里有一个新的字符串生成("ab") 三个相加后:"abc" 这里又有一个新的字符串生成("abc")
-
-
结论:三个字符串相加,就有5个字符串占用空间,导致效率低下
StringBuilder类
-
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
本文来自博客园,作者:LeeHua,转载请注明原文链接:https://www.cnblogs.com/liyihua/p/12181513.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)