JAVA中三个类的对比:String、StringBuffer和StringBuilder

news/2025/11/3 12:46:26/文章来源:https://www.cnblogs.com/roadtojava/p/19186744

在Java中,String、StringBuffer和StringBuilder都是用于处理字符串的类,但它们有不同的特性和适用场景。以下是它们的详细对比:

1. String 类

特性:

// String 示例
String str1 = "Hello";
String str2 = str1 + " World"; // 创建新的String对象
System.out.println(str1); // 输出: Hello (原对象未改变)
System.out.println(str2); // 输出: Hello World

适用场景:

  • 字符串不经常修改的情况
  • 多线程环境
  • 作为HashMap的键

2. StringBuffer 类

特性:

// StringBuffer 示例
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // 在原对象上修改
sb.insert(5, ",");
System.out.println(sb.toString()); // 输出: Hello, World

3. StringBuilder 类

特性:

// StringBuilder 示例
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // 在原对象上修改
sb.reverse();
System.out.println(sb.toString()); // 输出: dlroW olleH

性能对比测试

public class StringPerformanceTest {public static void main(String[] args) {int iterations = 100000;// String 连接性能long startTime = System.currentTimeMillis();String str = "";for (int i = 0; i < iterations; i++) {str += "a"; // 每次连接都创建新对象}long stringTime = System.currentTimeMillis() - startTime;// StringBuffer 性能startTime = System.currentTimeMillis();StringBuffer sbuffer = new StringBuffer();for (int i = 0; i < iterations; i++) {sbuffer.append("a");}long bufferTime = System.currentTimeMillis() - startTime;// StringBuilder 性能startTime = System.currentTimeMillis();StringBuilder sbuilder = new StringBuilder();for (int i = 0; i < iterations; i++) {sbuilder.append("a");}long builderTime = System.currentTimeMillis() - startTime;System.out.println("String 时间: " + stringTime + "ms");System.out.println("StringBuffer 时间: " + bufferTime + "ms");System.out.println("StringBuilder 时间: " + builderTime + "ms");}
}

详细对比表格

特性 String StringBuffer StringBuilder
可变性 不可变 可变 可变
线程安全
性能 低(频繁修改时)
存储 字符串常量池 堆内存 堆内存
同步 不需要 方法同步 不同步
内存效率 低(频繁修改时)

使用建议

使用 String 的情况:

// 字符串不经常修改
String message = "Welcome to Java";
String fileName = "config.properties";// 作为方法参数或返回值
public String getUserInfo(String userId) {return "User: " + userId;
}

使用 StringBuffer 的情况:

// 多线程环境下的字符串操作
public class ThreadSafeExample {private StringBuffer sharedBuffer = new StringBuffer();public void appendData(String data) {sharedBuffer.append(data); // 线程安全}
}

使用 StringBuilder 的情况:

// 单线程环境下的字符串拼接
public String buildSQL(String table, String whereClause) {StringBuilder sql = new StringBuilder();sql.append("SELECT * FROM ").append(table).append(" WHERE ").append(whereClause);return sql.toString();
}// 循环中的字符串构建
StringBuilder result = new StringBuilder();
for (int i = 0; i < 100; i++) {result.append(i).append(", ");
}

最佳实践总结

  1. 少量字符串操作 → 使用 String
  2. 多线程环境下的频繁字符串操作 → 使用 StringBuffer
  3. 单线程环境下的频繁字符串操作 → 使用 StringBuilder
  4. 字符串拼接使用 + 时,编译器会自动优化为 StringBuilder
  5. 循环中的字符串拼接 一定要使用 StringBuilder 或 StringBuffer

选择合适的字符串类可以显著提高程序性能和内存使用效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年11月工装装修公司专业排行:深度评测与使用指南

随着企业规模的扩大和商业空间的升级需求,工装装修市场在2025年呈现出稳步增长的趋势。根据中国建筑装饰协会发布的数据,2024年工装市场规模已达到2.1万亿元,预计2025年将保持8%左右的年增长率。在这样的市场背景下…

Lora Image Cropper

Lora Image CropperLora Image Cropper is a simple Qt desktop application for cropping images. It allows you to load an image, crop it to a specific size, and save the cropped image to a file. 把from Py…

欢迎报名!Kusica 基于K8s的多方安全协同框架11月亮相杭州KCD

当三秋桂子遇见分布式计算,当十里荷花碰撞微服务架构,这座被马可波罗誉为"世界最美丽华贵之天城"的数字经济之城,即将迎来一场重量级技术盛宴。本次活动,隐语社区作为可信数据流通领域的先锋力量,将亮相…

2025年11月工装装修公司推荐榜单:权威评测与选择指南

在当今商业环境快速发展的背景下,工装装修已成为企业提升形象、优化功能空间的重要环节。无论是新办公场所的设立,还是现有商业空间的升级改造,选择一家可靠的工装装修公司至关重要。企业决策者、物业管理者或项目负…

2025 年 11 月沈阳办公家具厂家推荐排行榜,办公桌,办公椅,文件柜,会议桌,办公沙发公司推荐

2025年11月沈阳办公家具厂家推荐排行榜:专业采购指南行业背景与发展趋势随着现代办公理念的不断升级,办公家具行业正经历着深刻的变革。2025年的办公家具市场呈现出智能化、人性化、环保化三大发展趋势。智能办公家具…

2025 年 11 月沈阳办公家具厂家推荐排行榜,办公桌,办公椅,文件柜,会议桌,办公沙发公司推荐,品质与设计双重保障!

2025年11月沈阳办公家具厂家推荐排行榜:品质与设计双重保障在现代化办公环境建设中,办公家具作为企业形象与工作效率的重要载体,其选择标准已从单一的功能性需求,逐步发展为集人体工学、空间美学、环保标准与使用体…

软件技术工程第二次作业

龚可为 2023329301124 链接 https://gitee.com/gongkewei/homework

git 命令别名设置

目录背景和价值参考资料 背景和价值 git config --global alias.br branch 参考资料

单机模式下nacos的安装与使用

一、nacos 的安装(安装包方式) ① 下载安装包 https://nacos.io/download/nacos-server/ 并进行解压缩 unzip nacos-server-$version.zip # 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin② 修改配置文件…

ch2题解

ch2题解 A-数列有序 考察数组遍历和插入。 题意: 给你一个升序的长度为 \(n\) 的 \(a\) 数组,然后给你一个 \(x\),把 \(x\) 插入到数组 \(a\) 中使它依然有序。 输出插入后的数组。 解题思路: 因为 \(a\) 数组是有…

2025年11月3日。上课积极回答问题喜得三分

2025年11月3日。上课积极回答问题喜得三分上课积极回答问题喜得三分。今日我与软件需求与分析课程上积极回答王建民老师的问题获得了加三分的奖励以此为证。

Tita 项目经营版:全方位赋能企业项目全流程管理

在当今竞争激烈的商业环境中,企业的项目管理能力直接关系到其竞争力与发展潜力。Tita 项目经营版作为一款卓越的项目管理解决方案,为企业提供了从项目立项到结束的全流程精细化管理,助力企业实现高效运营与持续增长…

软件需求分析课堂加分 - 2305

软件需求分析课堂加分课堂积极发言+3

互测赛(4)总结

wxir没有交代码!!!举办了!!!

2025 年 11 月冷水机厂家推荐排行榜,螺杆冷水机,工业冷水机,水冷式冷水机,风冷式冷水机,螺杆式冷水机,小型冷水机公司推荐

2025年11月冷水机厂家推荐排行榜:专业选购指南 冷水机作为工业制冷领域的核心设备,在制造业、化工、医药、食品加工等行业中扮演着至关重要的角色。随着工业4.0时代的深入发展,冷水机技术也在不断升级迭代,从传统单…

2025 年 11 月新风系统厂家推荐排行榜,新风系统安装,中央新风系统,空调新风系统,室内新风系统,家用新风系统,大金格力品牌甄选

2025 年 11 月新风系统厂家推荐排行榜:专业视角下的品牌甄选与系统选型指南 随着建筑节能标准的提升和室内空气健康意识的普及,新风系统已成为现代建筑不可或缺的组成部分。根据建筑环境研究机构的数据显示,2024 年…

2025年11月珠海酒店实地评测榜:十强住宿参数与口碑排行一览

计划到珠海看海、参展、遛娃或出差,却常被“海景房是否真能看到海”“周末涨价三倍”“停车排队半小时”等吐槽劝退。2025年第三季度珠海市文化广电旅游体育局数据显示,全市星级酒店平均入住率78.4,情侣路沿线高端房…

2025年11月黄褐斑改善产品对比榜:五款高回购单品全维度评价

黄褐斑常被称为“斑中之王”,成因涉及紫外线累积、激素波动、屏障受损、血管炎症等多重通路,一旦形成便易反复。2025年国家药监局《化妆品功效宣称评价规范》升级后,淡斑类新品须通过人体功效测试方可备案,市场门槛…

#20232329易杨文轩 2025-2026-1 《网络与系统攻防技术》 实验四实验报告

1、实验内容 1.1恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶…