Java---StringBuilder

基本介绍

1)一个可变的字符序列。此类提供了一个与 StringBuffer 兼容的 API ,但不保证同步(StringBuilder 不是线程安全)。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 更快

2)在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据

StringBuilder 常用方法

StringBuilder 和 String Buffer 均代表可变的字符序列,方法是一样的,所以使用和 StringBuffer一样

java 复制代码
package com.heima.Hello.StringBuilder_;

public class StringBuilder01 {
    public static void main(String[] args) {
        // 1.StringBuilder 继承 AbstractStringBuilder 类
        // 2.实现了 Serializable , 说明 StringBuilder 对象是可以串行化(对象可以网络传输,可以保存到文件)
        // 3.StringBuilder 对象字符序列仍然是存放在其父类 AbstractStringBuilder 的 char[] value
        // 因此,字符序列是堆中
        // 5.StringBuilder 的方法,没有做互斥的处理,即没有 synchroized 关键字,因此在单线程的情况下推荐使用StringBuilder
        StringBuilder stringBuilder = new StringBuilder();
    }
}

String、StringBuffer 和 StringBuilder 的比较

1)String 和 StringBuffer 非常类似 ,均代表可变的字符序列,而且方法也一样

2)String:不可变字符序列,效率低,但是复用率高

3)StringBuffer:可变字符序列、效率较高(增删)、线程安全,看源码

4)StringBuilder:可变字符序列、效率最高、线程不安全

5)String 使用注意说明:

string s = "a"; // 创建了一个字符串

是 s += "b"; // 实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串 s += "b" (也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能 => 结论:如果我们对String 做大量修改,不要使用 String,使用StringBuffer,如果是单线程,则使用StringBuilder

String、StringBuffer 和 StringBuilder 的效率测试

StringBuilder > StringBuffer > String

String、StringBuffer 和 StringBuilder 的选择

使用的原则,结论:

1.如果字符串存在大量的修改操作,一般使用 StringBuffer 或 StringBuilder

2.如果字符串存在大量的修改操作,并在单线程的情况,使用 StringBuilder

3.如果字符串存在大量的修改操作,并在多线程的情况,使用 StringBuffer

4.如果我们字符串很少修改,被多个对象引用,使用 String,比如配置信息等

StringBuilder 的方法使用和 StringBuffer 一样,不再说

相关推荐
m0_587383006 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·6 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
专注仿真6 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
Best-Wishes6 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停7 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金9 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
爱上网的小舟9 小时前
星际战士2启动错误怎么办?5种游戏报错解决方法
开发语言·php
paopaokaka_luck10 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
阿里嘎多学长10 小时前
2026-10-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Wang's Blog10 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo