`

StringBuffer And StringBuilder

 
阅读更多

StringBuilder是在1.5版本时出现的,是StringBuffer的改进型,速度有所提高,但不支持线程同步了。

所以如果在多线程中使用,还是得用StringBuffer。

 

那么让我们比较一下两个类,以append方法为例

public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
    public synchronized StringBuffer append(String str) {
	super.append(str);
        return this;
    }
}


public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
    public StringBuilder append(String str) {
	super.append(str);
        return this;
    }
}

 区别在于synchronized 关键字。

 

API:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html

分享到:
评论

相关推荐

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

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

    java笔试题

    3. **String与StringBuffer的区别**:String对象一旦创建就不能更改,而StringBuffer或StringBuilder对象则可以在原有基础上追加或修改内容。在处理大量字符串拼接时,使用StringBuffer或StringBuilder更为高效。 4...

    整理的Java-EE面试总结.pdf

    在字符串操作方面,String、StringBuffer和StringBuilder的区别是面试时经常被问到的问题。String是不可变的字符串,每次修改都会生成新的字符串对象。StringBuffer和StringBuilder则是可以修改内容的字符串缓冲区。...

    java offer收割指南

    String 是不可变的,Stringbuffer 和 StringBuilder 是可变的。Stringbuffer 是线程安全的,而 StringBuilder 不是。 4. ArrayList 和 LinkedList 有什么区别。 ArrayList 是基于数组实现的,LinkedList 是基于...

    2024高级中级-java面试题.docx

    String 是不可变的字符串对象,StringBuffer 和 StringBuilder 是可变的字符串对象。StringBuffer 是线程安全的,而 StringBuilder 不是。 7. Java 异常处理 Java 异常处理机制包括 try-catch-finally 结构。try ...

    北科Java新面试宝典.pdf

    2. String、StringBuffer、StringBuilder的区别:String是不可变对象,StringBuffer和StringBuilder是可变对象,StringBuffer是线程安全的,而StringBuilder不是。 3. int和Integer的区别:int是基本数据类型,...

    于笑扬java综合知识点总结-必背.pdf

    StringBuffer、StringBuilder 和 String 都是 Java 中的字符串类,但是它们有所不同。String 是不可变的,意味着一旦创建就不能修改。StringBuffer 和 StringBuilder 是可变的,意味着可以修改。StringBuffer 是线程...

    java总结,问题,知识点

    - StringBuffer和StringBuilder都是可变的,它们在字符串操作中提供了更高的性能,尤其是多线程环境下推荐使用StringBuffer,因为它线程安全;单线程环境中StringBuilder效率更高。 5. Hashtable与HashMap的区别:...

    Java面经-百度banbne-副本.pdf

    String是不可变的,而StringBuffer和StringBuilder是可变的。StringBuffer是线程安全的,而StringBuilder是线程不安全的。 7. **Java中的静态和final关键字**: static表示静态,可以用来修饰类的属性和方法,...

    于笑扬java综合知识点总结-必背(吐血推荐).doc

    StringBuffer、StringBuilder和String都是Java中的字符串处理类,但它们有不同的特点: * String:不可变字符串,所有操作都会生成新的字符串 * StringBuffer:可变字符串,多线程安全,同步锁机制 * StringBuilder...

    java综合知识点总结-必背1

    4. **StringBuffer/StringBuilder与String的区别**:String是不可变的,每次修改都会创建新对象,而StringBuilder/StringBuffer是可变的,修改时不会创建新对象,适合大量字符串操作,尤其在多线程环境下使用...

    java面试第一部分:基础知识

    `StringBuffer`和`StringBuilder`可变,它们在内存中直接修改,`StringBuffer`在多线程环境下是线程安全的,`StringBuilder`则不是,但在单线程环境中性能优于`StringBuffer`。 7. **字符串反转**:可以使用`...

    Money And Date toChinese Java

    - 使用StringBuilder或StringBuffer进行字符串拼接,避免大量的字符串连接操作导致的内存开销。 8. **错误处理**: - 需要对输入数据进行有效性检查,如检查金额是否为合法的数字,日期是否符合格式等,并在出现...

    玉宝必背锦集之---葵花宝典.pdf

    String类是不可变的,因此对于频繁变更的字符串操作,推荐使用StringBuffer或StringBuilder。 3. int是Java的原始数据类型,而Integer是int的封装类。原始类型存储的是具体的数值,而封装类是对象,可以赋予null值...

    Java面试宝典Beta5.0.pdf

    String、StringBuilder和StringBuffer是用于字符串操作的类,其中String是不可变的,而StringBuilder和StringBuffer是可变的,StringBuffer比StringBuilder更慢但线程安全。 18. Java的数据类型:Java的基本数据...

    2012年java面试题总结

    #### String、StringBuffer、StringBuilder的区别 - **String**:不可变字符串,适合频繁读取但不修改的场景。每次修改都会创建一个新的对象,影响性能。 - **StringBuffer**:线程安全的可变字符串,适用于多线程...

    java综合知识

    4. **StringBuffer/StringBuilder与String的区别**:两者都是可变字符序列,但StringBuilder在单线程环境下效率更高,因为它不保证线程安全,而StringBuffer在多线程环境下更合适,因为它提供了同步方法。...

    SQL转拼接代码

    在Java中,我们可以使用StringBuilder或StringBuffer类进行字符串拼接。例如,如果你有一个SQL插入语句,你可能会这样做: ```java StringBuilder sql = new StringBuilder(); sql.append("INSERT INTO table_name ...

Global site tag (gtag.js) - Google Analytics