039.StringBuilder的常规操作和链式操作
1.Java编译器对String
做了特殊处理,虽然可以直接拼接字符串,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率。为了能高效拼接字符串,Java标准库提供了StringBuilder
,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder
中新增字符时,不会创建新的临时对象:
package com.array.test; public class StringBuilderTest { public static void main(String[] args) { //常规操作 StringBuilder stringBuilder = new StringBuilder(1024); for (int i = 0; i < 10; i++) { stringBuilder.append(i); if (i != 9) { stringBuilder.append(','); } } String s = stringBuilder.toString(); System.out.println(s); } }
2.StringBuilder
还可以进行链式操作,进行链式操作的关键是,定义的append()
方法会返回this
,这样,就可以不断调用自身的其他方法。仿照StringBuilder
2.1创建Adder类
package com.array.test; public class Adder { private int sum = 0; public Adder add(int n) { sum += n; return this; } public Adder inc() { sum ++; return this; } public int value() { return sum; } }
2.2在StringBuilderTest中编写测试方法
package com.array.test; public class StringBuilderTest { public static void main(String[] args) {//进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法 Adder adder = new Adder(); adder.add(3); adder.add(5); adder.inc(); adder.add(10); System.out.println(adder.value()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!