Java字符串操作进阶:StringBuilder与StringBuffer剖析

文章标题:

Java字符串操作深度解析:StringBuilder与StringBuffer详解

文章内容

文章目录

  • 字符串的不可变性
  • StringBuilder与StringBuffer
    • 函数运用

字符串的不可变性

字符串之所以不可变,是因为其内部采用了private修饰,仅能在类的内部被访问,外部无法直接对其进行修改。例如下面的代码:

public class test {
    public static void main(String[] args) {
        String str = "abc";
        str += "def";
        System.out.println(str);
    }
}

StringBuilder与StringBuffer

基础示例

public class test {
    public static void main1(String[] args) {
        String str = "abc";
        str += "def";
        System.out.println(str);
    }

    public static void main(String[] args) {
        String str = "hello";
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(str);
        stringBuilder.append("abc");
        str = stringBuilder.toString();
        System.out.println(str);
    }
}

性能差异剖析

  1. 速度对比:通常情况下,StringBuilder的执行速度要明显快于String。这是因为String每次进行拼接操作时都会创建新的String对象,而使用StringBuilder进行append操作后再转为String,避免了频繁的对象创建与销毁,减少了性能消耗。
  2. 对象生成情况:每次String进行拼接都会产生新的对象,而StringBuilder和StringBuffer在拼接过程中不会生成新的对象,直接在原对象基础上进行操作。

性能测试代码示例

public class Test {
    public static void main(String[] args) {
        // 记录String操作的起始时间
        long start = System.currentTimeMillis();
        String s = "";
        for (int i = 0; i < 10000; i++) {
            s += i;
        }
        // 记录String操作的结束时间并计算耗时
        long end = System.currentTimeMillis();
        System.out.println("String的时间:" + (end - start));

        // 记录StringBuilder操作的起始时间
        long start1 = System.currentTimeMillis();
        StringBuilder stringBuilder = new StringBuilder("");
        for (int i = 0; i < 10000; i++) {
            stringBuilder.append(i); // 执行拼接操作
        }
        // 记录StringBuilder操作的结束时间并计算耗时
        long end1 = System.currentTimeMillis();
        System.out.println("StringBuilder的时间:" + (end1 - start1));

        // 记录StringBuffer操作的起始时间
        long start2 = System.currentTimeMillis();
        StringBuffer stringBuffer = new StringBuffer("");
        for (int i = 0; i < 10000; i++) {
            stringBuffer.append(i);
        }
        // 记录StringBuffer操作的结束时间并计算耗时
        long end2 = System.currentTimeMillis();
        System.out.println("StringBuffer的时间:" + (end2 - start2));
    }
}

线程安全性区别

  1. StringBuffer的线程安全性:StringBuffer是线程安全的,其所有方法都使用synchronized修饰,这意味着同一时间只能有一个线程执行其方法,通过锁机制保证线程安全,但锁的获取与释放会带来一定的性能开销,所以StringBuffer比StringBuilder慢。
  2. 线程安全的含义:线程安全指的是同一时间仅有一个线程能够执行相关操作,执行完成后会释放锁。但锁的获取与释放过程会消耗时间,因此StringBuffer在性能上不如StringBuilder。

函数使用

特殊方法

  1. reverse方法:可对字符串进行逆置操作。例如:
public static void main(String[] args) {
    StringBuilder stringBuilder = new StringBuilder("hello");
    stringBuilder.reverse();
    System.out.println(stringBuilder);
}

三者区别总结

  • String的内容不可修改,每次拼接都会生成新的对象。
  • StringBuilder和StringBuffer的内容可以修改,直接在原对象上进行操作。
  • StringBuilder未采用同步处理,是线程不安全的;StringBuffer采用了同步处理,是线程安全的。它们的函数有相似之处。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12721.html

赞 (0)
LomuLomu
上一篇 2025 年 7 月 3 日
下一篇 2025 年 7 月 3 日

相关推荐

  • idea 2025.3破解教程,激活码同步更新

    IDEA 2025最新破解教程:永久激活码+补丁下载(亲测有效) 重要提示:本教程所涉及的IntelliJ IDEA破解补丁与激活码均来源于网络收集,严禁用于商业用途,仅限个人学习研究使用。若涉及侵权问题,请联系作者删除。经济条件允许的话,强烈建议支持正版! 话不多说,先来看IDEA 2025.2.1版本破解成功的实况截图,如图所示,许可证有效期已激活至20…

    IDEA破解教程 2026 年 3 月 17 日
    55400
  • datagrip激活码授权流程及破解激活指南

    本教程适用于IDEA、PyCharm、DataGrip、Goland等,支持Jetbrains全家桶! 废话不多说,先上最新版本破解成功的截图,如下,可以看到已经成功破解到 2099 年辣,舒服! 接下来,我就将通过图文的方式, 来详细讲解如何激活DataGrip至 2099 年。 当然这个激活方法,同样适用于之前的旧版本! 不管你是什么操作系统,什么版本,…

    DataGrip激活码 2025 年 12 月 30 日
    39600
  • 2025年最新DataGrip激活码分享及永久破解教程(亲测有效)🔥

    本教程适用于Jetbrains全家桶,包括IDEA、PyCharm、DataGrip、Goland等开发工具!💯 先给大家看看最新版本破解成功的截图,可以看到已经成功破解到2099年啦,简直不要太爽!🎉 下面我就用详细的图文教程,手把手教你如何激活DataGrip至2099年。这个方法同样适用于旧版本哦!✨ 无论你使用什么操作系统,什么版本,这里都为你准备好…

    2025 年 6 月 9 日
    1.1K00
  • 2025年最新DataGrip永久破解教程(附激活码/注册码)🔥

    还在为DataGrip的试用期到期而烦恼吗?🤔 本教程将手把手教你如何永久破解DataGrip至2099年!适用于Windows系统,操作简单,成功率超高!💯 🚀 本教程同样适用于JetBrains全家桶(IDEA、PyCharm、Goland等) 先来看看破解成功后的效果吧!有效期直接拉到2099年,简直不要太爽!🎉 第一步:下载DataGrip安装包 如…

    DataGrip激活码 2025 年 7 月 1 日
    96900
  • pycharm激活码免费获取与pycharm破解脚本分享

    申明:本教程 PyCharm破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! PyCharm是 JetBrains 推出的开发编辑器,功能强大,适用于 Windows、Mac 和 Linux 系统。本文将详细介绍如何通过破解补丁实现永久激活,解锁所有高级功能。 不管你是什么版本、什么操作系统…

    PyCharm激活码 2026 年 1 月 26 日
    35500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信