`

Java中StringBuffer和StringBuilder

    博客分类:
  • Java
阅读更多
1. Java中StringBuffer和StringBuilder
String是一个不可变的对象,每次修改String对象实际上是创建新对象,并将引用指向新对象。效率很低。

StringBuffer是可变的,即每次修改只是针对其本身,大部分情况下比String效率高,StringBuffer保证同步(synchronized),所以线程安全。
StringBuffer使用时最好指定容量,这样会比不指定容量快30%-40%,甚至比不指定容量的StringBuilder还快。

StringBuilder没有实现同步,所以非线程安全。但效率应该比StringBuffer高。

1. String最慢的原因
    String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
    而StringBuilder和StringBuffer的对象是变量,对变量进行操作就是直接对该对象进行更改,而不进行创建和回收的操作,所以速度要比String快很多。

2. 线程安全
    StringBuilder是线程不安全的,而StringBuffer是线程安全的。
    StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的。
	StringBuilder的方法则没有synchronized关键字,所以不能保证线程安全,有可能会出现一些错误的操作。

3. 使用情况
    String:适用于少量的字符串操作的情况
    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

StringBuffer常用方法
    1) public StringBuffer append(String s) 将指定的字符串追加到此字符序列
    2) public StringBuffer reverse() 将此字符序列用其反转形式取代
    3) public delete(int start, int end) 移除此序列的子字符串中的字符
    4) public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中
    5) replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符
分享到:
评论

相关推荐

    String StringBuffer和StringBuilder区别之源码解析

    在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间...

    Java中StringBuffer和StringBuilder_动力节点Java学院整理

    在Java编程语言中,`StringBuffer`和`StringBuilder`类都是用来处理字符串的,它们的主要功能是构建和操作字符串。这两个类与`String`类不同,`String`类是不可变的,这意味着一旦创建了一个`String`对象,就不能...

    String,StringBuffer,StringBuilder区别

    对于Java中的字符串操作,主要涉及到三个类:String、StringBuffer和StringBuilder。理解这三个类之间的区别,对于编写高质量、高效率的代码至关重要。 首先,String类是Java中最基础也是最常用的字符串处理类。...

    String ,StringBuffer与StringBuilder

    在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String 对象,就不能修改它的值。每次对 String 对象的...

    String及StringBuffer和StringBuilder的区别

    String、StringBuffer 和 StringBuilder 是 Java 语言中三种不同类型的字符串处理方式,它们之间存在着明显的性能和线程安全性差异。 String String 类型是不可变的对象,每次对 String 对象进行改变时都会生成一...

    String、StringBuffer与StringBuilder之间区别

     StringBuffer:字符创变量  StringBuilder:字符创变量  从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:

    Java中StringBuffer和StringBuilder区别

    在Java编程语言中,`StringBuffer` 和 `StringBuilder` 都是用来处理字符串连接操作的类,它们在处理大量字符串拼接时比简单的 `+` 操作更为高效。这两个类的主要区别在于线程安全性和性能: 1. **线程安全性**: ...

    面试题java StringBuffer和StringBuilder类常见操作和用法

    在Java编程语言中,StringBuffer和StringBuilder类是处理可变字符串序列的重要工具。它们提供了丰富的功能,如添加、插入、删除、替换字符,以及反转字符串序列等。由于这两个类的特性,它们在处理大量字符串操作时...

    Java中String,StringBuffer与StringBuilder的区别

    最后,让我们总结一下 Java 中 String, StringBuffer 与 StringBuilder 三种字符串类型的区别和用法。String 类型是不可变的对象,性能不好,适合不需要修改的字符串对象。StringBuffer 类型是可变的对象,性能好,...

    String、StringBuffer、StringBuilder的使用方法

    在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`是处理字符串的三个重要类,它们各自有特定的使用场景和优缺点。理解它们的差异对于编写高效的代码至关重要。 **String类** `String`是不可变的类,...

    Java StringBuffer & StringBuilder.pdf

    在Java编程语言中,`StringBuffer` 和 `StringBuilder` 是两个重要的类,它们主要用于处理可变的字符串。这两个类在很多方面都非常相似,但存在一些关键的区别。 **一、StringBuffer和StringBuilder的区别** 1. **...

    StringBuffer 和 StringBuilder 类

    在Java编程中,当我们需要对字符串进行多次修改时,StringBuffer和StringBuilder类成为首选。这两个类提供了一种高效且灵活的方式来处理字符串,与不可变的String类相比,它们能避免创建大量未使用的对象,从而提高...

    StringBuffer练习.doc

    StringBuffer练习.doc

    String-StringBuffer-StringBuilder

    在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`都是用来处理字符串的类,但它们之间存在显著的差异,主要体现在性能、线程安全性和使用场景上。 首先,`String`是最基本的字符串类,它代表的是不可...

    《剑指offer》Java-String、StringBuffer 和 StringBuilder 的区别.pdf

    在Java编程语言中,String、StringBuffer和StringBuilder都是用来处理字符串的对象,但它们之间存在显著的区别。String是最常见的字符串类型,它的特点是不可变性。这意味着一旦一个String对象被创建,就不能进行...

    Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    "Java 中 String、StringBuffer 和 StringBuilder 的区别及用法" Java 中 String、StringBuffer 和 StringBuilder 是三个常用的字符串操作类,了解它们之间的区别对 Java 开发者来说非常重要。本文将详细介绍这三者...

    StringBuffer & StringBuilder 源码分析.docx

    StringBuffer 和 StringBuilder 是 Java 语言中两个常用的字符串操作类,它们都是 CharSequence 接口的实现类,并且都继承了 AbstractStringBuilder 类。下面是对这两个类的源码分析。 首先,StringBuffer 是线程...

    String、StringBuilder和StringBuffer的区别

    在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...

Global site tag (gtag.js) - Google Analytics