`

从源码的角度分析为啥执行速度是 StringBuilder > StringBuffer > String

阅读更多
在 Java 中字符串的执行速度是 StringBuilder > StringBuffer > String 了?

我们先说下 StringBuilder 和 StringBuffer 这两个类. 首先这两个类都是继承的 AbstractStringBuilder.


我们可以看到 AbstractStringBuilder 中使用 char[] 数组来存储字符. 换句话说,AbstractStringBuilder 相当于一个 ArrayList,不过的是 AbstractStringBuilder 只存储字符. 这和 String 的区别是,当一个字符串被频繁的修改的时候,AbstractStringBuilder 不需要频繁的创建对象,然后销毁老的对象,而 String 需要. 这也就是为啥 StringBuilder 和 StringBuffer 的执行速度比 String 块了.

然后说下 StringBuilder 和 StringBuffer.

StringBuffer 是线程安全类,它的方法上锁了,上锁和释放锁都需要开销,而 StringBuilder 是线程不安全的,它不需要这些额外的开销,所有 StringBuilder 的执行速度快于 StringBuffer.
1
0
分享到:
评论

相关推荐

    String StringBuffer和StringBuilder区别之源码解析

    在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间的区别。 String类 String类是Java中最基本的字符串类,它是final类,意思是它不能被继承。String类的字符串是不...

    源码string和stringbuffer

    针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍...

    Java StringBuilder和StringBuffer源码分析

    五、String、StringBuilder与StringBuffer比较 `String`类是不可变的,每次修改都会创建一个新的`String`对象,这在处理大量字符串操作时会浪费大量的内存。而`StringBuilder`和`StringBuffer`通过内部的`value`数组...

    JAVA面试题 从源码角度分析StringBuffer和StringBuilder的区别

    JAVA面试题,从源码角度分析StringBuffer和StringBuilder的区别 在本文中,我们将从源码角度分析StringBuffer和StringBuilder的区别,这两个类都是Java中常用的字符串操作类,但是它们之间有什么区别呢?下面我们来...

    java CharSequence、String、StringBuffer、StringBuilder详解

    通过分析提供的`String.java`、`StringBuffer.java`和`StringBuilder.java`源码,我们可以深入理解这些类的内部实现,例如它们如何处理字符序列,以及在进行字符串操作时的内存分配和性能优化策略。源码阅读有助于...

    String与StringBuffer区别详解

    在Java编程语言中,`String`和`StringBuffer`(在Java 5之后被`StringBuilder`取代,但在多线程环境中仍然使用`StringBuffer`)是处理文本字符串的两个核心类,它们各自有着不同的特性和用途。理解它们的区别对于...

    浅析我对 String、StringBuilder、StringBuffer 的理解

    在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,但它们之间存在显著的区别和使用场景。下面是对这三个类的深入理解和分析。 首先,String类是最常见的字符串对象,它以其不可变性...

    C#中String StringBuilder StringBuffer类的用法

    C#中String StringBuilder StringBuffer类的用法 C#中String、StringBuilder和StringBuffer三个类是字符串操作中经常使用的类,本文将对这三个类的用法进行详细介绍。 String类 String类是C#中最基本的字符串类型...

    一篇讲清楚String、StringBuffer和StringBuild.doc

    String、StringBuffer 和StringBuilder 的详细介绍 一、String 篇 1、String 基本介绍 String 类代表字符串。 Java 程序中的所有字符串文字(例如”abc”)都被实现为此类的实例。String 是用来保存字符串的,...

    Java String、StringBuffer、StringBuilder(基于源码探索)

    `String`、`StringBuffer`和`StringBuilder`都是用于构建和操作字符串的类,但它们之间存在重要的差异。这些差异主要体现在对象的不可变性、线程安全性和性能方面。 首先,`String`类是最基础的字符串类,它的特点...

    初步支持String和StringBuffer类

    源码方面,`String`的实现是基于字符数组,而`StringBuffer`则扩展了`AbstractStringBuilder`类,同样使用字符数组。`StringBuffer`的关键方法如`append`、`insert`、`delete`等,都是直接操作这个内部数组。这些...

    java StringBuilder详解

    - `toString()`:将`StringBuilder`的内容转换为不可变的`String`对象。 3. **效率与线程安全**: `StringBuilder`是非线程安全的,适合单线程环境使用。在多线程环境下,推荐使用其线程安全的同胞类`...

    3160104875_杨樾人_homework31

    在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的重要类,它们各自具有不同的特性和使用场景。本文将对这三个类进行源代码分析,探讨它们的主要数据组织、功能实现以及性能差异。 1.1 ...

    纯面向对象的思想jdbc编程,StringBuffer线程,线程习题

    在Java中,String类是不可变的,这意味着它的内容一旦创建就不能改变,而StringBuilder和StringBuffer则提供了可变的字符串操作。其中,StringBuffer线程安全是因为它的方法加了同步锁,可以保证在多线程环境下,对...

    String_raw-源码.rar

    9. **编码与解码**:`String`类提供了与各种字符编码相关的函数,如`getBytes()`用于将字符串转换为字节数组,`new String(byte[] bytes, String charsetName)`用于从字节数组构建字符串。 10. **字符串的哈希值**...

    Java的String类讲解案例代码(String类使用:创建对象、比较、连接、截取、查找和替换、拆分...)StringBuf

    适用人群 String字符串操作类的源码资源适用于具有编程基础的开发者,特别是那些需要对字符串进行各种操作和处理的开发者。 使用场景 该源码资源适用于任何需要对字符串...String、StringBuffer和StringBuilder的对比

Global site tag (gtag.js) - Google Analytics