news 2026/5/30 22:07:08

java学习--String和StringBuffer互转

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java学习--String和StringBuffer互转

在 Java 中,String是不可变字符串,StringBuffer是可变字符串(线程安全),两者的相互转换是开发中常见操作,以下是具体实现方式、示例及注意事项:

一、String 转 StringBuffer

有两种核心方式:构造方法(推荐)、append()方法。

1. 构造方法(最简洁)

StringBuffer提供了接收String参数的构造方法,直接创建新的StringBuffer对象。

public class StringConvertDemo { public static void main(String[] args) { // 原始 String String str = "Hello Java"; // String 转 StringBuffer(构造方法) StringBuffer sb = new StringBuffer(str); System.out.println("转换后的 StringBuffer: " + sb); // 输出:Hello Java System.out.println("类型:" + sb.getClass().getName()); // 输出:java.lang.StringBuffer } }
2. append () 方法(先创建空对象,再追加)

先创建空的StringBuffer,再通过append()方法把String内容追加进去。

public class StringConvertDemo { public static void main(String[] args) { String str = "Hello World"; // 先创建空 StringBuffer,再追加 String StringBuffer sb = new StringBuffer(); sb.append(str); System.out.println("转换后的 StringBuffer: " + sb); // 输出:Hello World } }

二、StringBuffer 转 String

有三种常用方式:toString()方法(推荐)、String构造方法、substring()方法。

1. toString () 方法(最推荐)

StringBuffer重写了toString()方法,直接返回对应的String对象,效率最高。

public class StringConvertDemo { public static void main(String[] args) { // 原始 StringBuffer StringBuffer sb = new StringBuffer("Hello StringBuffer"); // StringBuffer 转 String(toString()) String str = sb.toString(); System.out.println("转换后的 String: " + str); // 输出:Hello StringBuffer System.out.println("类型:" + str.getClass().getName()); // 输出:java.lang.String } }
2. String 构造方法

通过String的构造方法接收StringBuffer参数(底层仍调用toString())。

public class StringConvertDemo { public static void main(String[] args) { StringBuffer sb = new StringBuffer("Test Convert"); // String 构造方法转换 String str = new String(sb); System.out.println("转换后的 String: " + str); // 输出:Test Convert } }
3. substring () 方法(截取全部内容)

通过substring(0, length())截取StringBuffer的全部内容,返回String

public class StringConvertDemo { public static void main(String[] args) { StringBuffer sb = new StringBuffer("Substring Demo"); // 截取全部内容转换 String str = sb.substring(0, sb.length()); System.out.println("转换后的 String: " + str); // 输出:Substring Demo } }

三、关键注意事项

  1. 不可变性 vs 可变性

    • String转换为StringBuffer后,修改StringBuffer不会影响原String
    • StringBuffer转换为String后,生成的String是不可变的,修改原StringBuffer也不会影响该String
    // 示例:验证独立性 String str = "Original"; StringBuffer sb = new StringBuffer(str); sb.append(" Modified"); // 修改 StringBuffer System.out.println(str); // 输出:Original(原 String 不变) String newStr = sb.toString(); sb.append(" Again"); // 再次修改 StringBuffer System.out.println(newStr); // 输出:Original Modified(原转换后的 String 不变)
  2. 性能建议

    • StringStringBuffer优先用构造方法(少一次追加操作);
    • StringBufferString优先用toString()(底层直接获取字符数组,效率最高);
    • 如果是频繁拼接字符串,建议直接使用StringBuffer/StringBuilder,避免多次StringStringBuffer互转。
  3. 线程安全

    • StringBuffer是线程安全的,StringBuilder是非线程安全的(效率更高),如果不需要线程安全,建议用StringBuilder替代StringBuffer
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 15:42:59

测试诚信原则:数字时代质量防线的基石与践行路径

测试诚信的时代呼唤 在数字化浪潮席卷全球的2025年,软件已深入社会各个角落,从医疗设备到金融系统,从智能家居到自动驾驶,其质量直接关乎人类安全与效率。作为软件质量的“守门人”,测试从业者的责任空前重大。然而&a…

作者头像 李华
网站建设 2026/5/29 1:11:05

实测 GPT-5.2 与 Gemini-3:我用 AI 重构了 3000 行核心代码,结果令人沉默

别再手写前端了:Banana Pro (Gemini-3-Image) 视觉模型实战评测,草图秒变代码作为一名写了十年代码的老程序员我一直坚信一个观点代码质量是衡量工程师水平的唯一标准直到昨天我花了两天两夜优化了一个复杂的并发算法模块沾沾自喜地准备提交结果我手欠试…

作者头像 李华
网站建设 2026/5/28 15:23:27

代码之恋(第十五篇:分布式心跳与网络延迟)

南国的早晨,李磊站在新租的公寓窗前,看着陌生的城市。来小渔村一周,升职带来的兴奋已褪去,剩下的是对江城的思念。他打开电脑,屏幕上显示着与艾丽的视频通话窗口——这是他们每晚的“同步时间”。// Collaboration_v3.…

作者头像 李华
网站建设 2026/5/30 21:09:51

Vue单页应用(SPA)开发全解析:从原理到最佳实践

文章目录一、SPA架构核心原理1.1 什么是SPA?1.2 Vue实现SPA的三大支柱二、路由系统深度实现2.1 路由配置实战2.2 编程式导航三、数据管理进阶方案3.1 Pinia状态管理3.2 异步数据流处理四、性能优化实战4.1 路由懒加载4.2 状态持久化五、常见问题解决方案5.1 路由跳转…

作者头像 李华
网站建设 2026/5/29 15:28:22

2026四川大学计算机考研复试机试真题

2026四川大学计算机考研复试机试真题 2026四川大学计算机考研复试上机真题 历年四川大学计算机考研复试上机真题 历年四川大学计算机考研复试机试真题 更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream N 诺 DreamJudge 题库:输…

作者头像 李华
网站建设 2026/5/30 0:07:27

用Comsol探索水力压裂:井眼应力场与多分支缝应力分布的奥秘

应用comsol分析水力压裂对井眼附近应力场的影响应用comsol分析多分支缝压裂应力分布 在各种应力作用下,井眼围岩会发生应力集中现象,也会发生一定规律下的压缩和拉伸。 具体分析了岩石弹性模量、地应力和井眼液柱压力对应力场的影响。 具体算例如下。 正…

作者头像 李华