当前位置: 首页 > ds >正文

字符串---StringBuilder的使用

Java中的StringBuilder类是一个可变的字符序列,用于高效处理字符串的拼接、修改等操作。

其实就是类似于String对象,可以将String变成StringBuilder,用于一些特定场合,使得字符串的一些功能性能变强;

以下是其核心知识点的详细阐述:


1. 概述

  • 可变性:与不可变的String不同,StringBuilder允许直接修改内部字符数组,避免频繁创建新对象。
  • 性能优势:适用于大量字符串操作的场景(如循环拼接),比String+操作更高效。
  • 线程不安全:非线程安全,但因此性能优于线程安全的StringBuffer

简答来说一句话,他就是增强版的String对象;

但注意:

StringBuilder只适合用高效率的拼接和翻转字符串,而且他也没提供啥其他好的方法,因此,也别处处都用它;

2. 构造方法

方法

说明

StringBuilder()

初始容量为16的空实例

StringBuilder(int capacity)

指定初始容量的空实例

StringBuilder(String str)

用指定字符串初始化,容量为str.length() + 16

// 空构造,默认容量16
StringBuilder sb1 = new StringBuilder();// 指定初始容量
StringBuilder sb2 = new StringBuilder(20);// 用字符串初始化
StringBuilder sb3 = new StringBuilder("Hello");

3. 核心方法

追加内容:append()
  • 重载方法支持所有基本类型、StringObject等:
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(123).append(true); // 链式调用
System.out.println(sb.toString());
//Hello123true
  • 自动扩容,返回this对象。
插入内容:insert()
  • 在指定位置插入数据:
StringBuilder sb = new StringBuilder();// 在索引5处插入
sb.append("Hello").append(123).append(true);
sb.insert(5, " World");
System.out.println(sb.toString()); 
//Hello World123true
删除内容:delete() & deleteCharAt()
  • delete(int start, int end):删除子序列(左闭右开)。
  • deleteCharAt(int index):删除指定位置字符。
替换内容:replace()
  • 替换指定区间的字符:
StringBuilder sb = new StringBuilder();// 替换索引0-4的内容为"Hi"
sb.append("Hello").append(123).append(true);
sb.replace(0, 5, "Hi");
System.out.println(sb.toString());
//Hi123true
反转字符串:reverse()
  • 反转字符序列:
sb.reverse(); // "Hello" → "olleH"
变回字符串:toString()
  • StringBuilder毕竟只是容器,他并不是字符串本串,你总得把人家变回去吧
String str = sb.toString();

链式调用:

String result = new StringBuilder().append("One").insert(3, "Two").reverse().toString();System.out.println(result);  // 输出: enoT
其他方法
  • length():返回字符数。
  • capacity():返回当前容量。
  • setLength(int len):设置字符序列长度,可能截断或填充空字符。
  • trimToSize():释放多余容量,减少内存占用。

4. 容量管理

  • 默认扩容:当字符数超过容量时,新容量为原容量*2 + 2,或直接扩容到所需长度(取两者较大者)。
  • 预分配优化:若已知大致长度,初始化时指定容量可避免频繁扩容:
StringBuilder sb = new StringBuilder(100); // 初始容量100

适合的场景:StringBuilder适合频繁修改字符串的场景)。与不可变的 String 不同,StringBuilder 直接修改内部字符数组,避免频繁创建新对象,性能更高;

非线程安全StringBuilder 不保证线程安全,多线程环境下需改用 StringBuffer

http://www.xdnf.cn/news/5388.html

相关文章:

  • Kubernetes生产实战(一):多容器Pod协同实践
  • 超详细Kokoro-82M本地部署教程
  • JavaScript基础-switch分支流程控制
  • 3498. 字符串的反转度
  • MATLAB安装常见问题及解决方案详解(含代码示例)
  • 抖音app 抓包分析
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(18):条件形 文法
  • AI编程: 使用Trae1小时做成的音视频工具,提取音频并识别文本
  • 【python】json解析:invalid literal for int() with base 10: ‘\“\“‘“
  • 模型 启动效应
  • python如何提取Chrome中的保存的网站登录用户名密码?
  • 【日撸 Java 三百行】综合任务 1
  • Spark流水线在线演示
  • 小程序初始化加载时间优化 步骤思考与总结
  • (二)Linux下基本指令 2
  • 碰一碰发视频源码搭建的定制化开发指南,支持OEM
  • Vue v-model 深度解析:实现原理与高级用法
  • 【c++】多态详解
  • 【MySQL】数据表插入数据
  • 基于python的少儿兴趣班推荐系统的设计与实现
  • 微服务6大拆分原则
  • C++修炼:stack和queue
  • 服务器综合实验(实战详解)
  • 【新教程】Linux服务器ssh启用两步验证
  • 什么是深拷贝什么是浅拷贝,两者区别
  • PPO近端策略优化算法
  • Tailwind CSS v4 主题化实践入门(自定义 Theme + 主题模式切换)✨
  • shell 编程之正则表达式与文本处理器
  • JS逆向-7881游戏平台Lb-Sign参数和Lb-Timestamp参数
  • SaaS场快订平台项目说明【持续更新】