`

探讨String、StringBuffer和StringBuilder类之间的异同

阅读更多

1、String对象是不可变的,但引用变量是可变的。

 

2、如果创建了新的String而没有给它赋值,则对程序来说它是丢失的。

 

3、如果将String的引用变量指向了新的对象,在旧的对象可能丢失(看没有其他引用指向)。

 

4、String类是最终类,意味着其所有的方法都不能被覆写。

 

5、当JVM发现字符串的字面值时,会将它添加到String字面值池中,比如:

    1)String s="ab",则会将"abc"放入常量池中,并由s引用它。

    2)String s =new String("cd"),则会创建两个对象,一个在堆内存中(并由s引用它),一个放入常量池中(没有引用指向,但占用了内存)。

 

6、StringBuffer:线程安全的可变的字符串序列。

 

7、StringBuilder:非线程安全的可变的字符串序列。

 

8、StringBuffer和StringBuilder的API是相同(兼容)的。

 

9、StringBuffer和StringBuilder都是可变的,即无需创建新对象即可改变他们的值。

 

10、StringBuilder用在字符串缓冲区被单个线程使用时,将StrinBuilder的实例用于多个线程是不安全的。

 

11、StringBuffer可用在字符串缓冲区被多个线程使用的时候,可以在必要时对相应的方法进行同步。

 

12、如果可能,建议优先采用StringBuilder类,因为在大多数实现中,它比StringBuffer要快。

 

13、由于String对象是不可变的,在对String对象进行大量的修改时,就会在字符串常量池中产生大量的被丢弃的String对象(会消耗大量内存)。

 

14、基于以上第13点,所以如果要经常对字符串进行大量修改,则建议使用StringBuffer或StringBuilder。

 

 15、String类常用方法:charAt()、concat()、equalsignoreCase、length()、replace()、substring()、toLowerCase()、toUpperCase()、trim()以及toString()。

 

16、StringBuffer及StringBuilder常用方法:append()、delete()、insert()、reverse()及toString()。

 

分享到:
评论

相关推荐

    string和StringBuffer的区别

    总结一下,`String`和`StringBuffer`(以及`StringBuilder`)之间的主要区别在于: 1. 可变性:`String`不可变,`StringBuffer`(和`StringBuilder`)可变。 2. 性能:频繁修改字符串时,`StringBuffer`(或`...

    Java String StringBuilder StringBuffer

    在Android/Java开发中,用来处理字符串常用的类有3种: String、StringBuilder、StringBuffer。  它们的异同点:  1) 都是 final 类, 都不允许被继承;  2) String 长度是不可变的, StringBuffer、...

    JavaSE.docx

    JavaSE/docx JavaSE 是 Java 标准版,涵盖了 Java 基础知识点。下面是根据提供的文件信息,...* String、StringBuffer 和 StringBuilder 的异同 * Java 数组与集合的比较 * ArrayList 与 LinkedList 的比较存储结构

    华为JAVA面试题

    - StringBuilder:非线程安全的可变字符序列,效率比String和StringBuffer都要高。 通常情况下,如果要操作少量数据使用String;如果需要单线程操作大量数据使用StringBuilder;如果需要多线程操作大量数据使用...

    Java知识点.docx

    1. String、StringBuffer、StringBuilder的对比: - String是不可变的,每次操作都会创建新的对象,不推荐在频繁修改字符串的情况下使用。 - StringBuffer和StringBuilder都是可变的,它们在原对象上进行操作。...

    JAVA面试资料大全-整理.zip

    9、 String、StringBuffer、StringBuilder 的区别 10、 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 .............................................. ...............................................

    2022中高级Android程序员面试必备宝典.pdf,这是一份不错的文件

    - **字符串**:掌握String、StringBuffer和StringBuilder的异同,以及equals与"=="、hashCode的用途。 - **内存管理**:了解深拷贝与浅拷贝,Error与Exception的区别,反射机制及其应用。 - **重写equals()和...

    javar练习200题

    - StringBuilder与StringBuffer:比较它们的异同,理解线程安全的概念。 - 正则表达式:学习使用Pattern和Matcher类进行字符串匹配和操作。 7. **IO流** - 文件操作:理解File类的使用,进行文件的创建、读写...

    Java 新手学习课件

    6. **字符串处理**:介绍String类的基本操作,如字符串拼接、查找、替换和分割,并对比StringBuffer和StringBuilder的异同。 7. **异常处理**:解释如何使用try-catch-finally语句块进行异常捕获和处理,以及不同的...

    Java面试宝典2018-最全面试资料

    Java SE常用API如Math类、String类、StringBuilder和StringBuffer类的使用细节和区别也在书中有所涉及。 Java的数据类型包括基本数据类型和引用数据类型,书中详细讨论了各种数据类型的内存占用、使用场景及特性。...

    java课件

    11. **字符串处理**:分析String类的特点,StringBuffer与StringBuilder的异同,以及正则表达式的使用。 12. **输入/输出流**:涵盖文件I/O、字节流、字符流,以及对象序列化和反序列化。 13. **多线程**:介绍...

    java面试宝典

    24、String, StringBuffer StringBuilder 的区别。 10 25、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 10 27、描述一下JVM 加载class 文件的原理机制? 10 28、char 型变量中能不能...

    java常见的面试题和笔试题

    - 继承是一种类之间的关系,其中一个类(子类)可以从另一个类(父类)继承属性和行为。 - 这种机制有助于代码复用和扩展,使得新类可以继承现有类的功能并添加或修改特定的行为。 - Java支持单继承,但可以通过...

    Java面试题

    - **StringBuilder**:非线程安全的可变字符串类,性能高于 `StringBuffer`。 - **String**:不可变字符串类。 - **选择建议**: - 如果需要频繁修改字符串且不考虑线程安全,则使用 `StringBuilder`。 - 如果需要...

    史上最全java面试题总结.pdf

    - **String与StringBuffer/StringBuilder的区别**:String是不可变的,而StringBuilder和StringBuffer是可变的。这意味着每次对String进行修改时都会创建新的对象,而StringBuilder和StringBuffer可以在原有基础上...

    JAVA笔试中的50问题

    ### JAVA笔试中的50...这些知识点涵盖了面向对象编程的基本原则,如抽象、继承、封装和多态性,以及Java中的一些基本概念和技术,如String、Integer、StringBuffer等。理解这些知识点对于掌握Java编程是非常重要的。

    JAVA程序员面试题2

    3. **StringBuffer 与 StringBuilder**:为了提高性能,可以使用`StringBuffer`或`StringBuilder`类来构建字符串,尤其是在需要频繁修改字符串内容的情况下。`StringBuffer`是线程安全的,而`StringBuilder`是非线程...

    腾讯CSIG区域研发中心安卓开发暑期实习面试准备材料

    3. **并发编程**:了解线程安全,比如`StringBuffer`和`StringBuilder`的异同,以及`ArrayList`与`LinkedList`的选择。 4. **内存管理**:理解内存泄露和内存溢出的概念,如`String s`和`String s = new String("xx...

    2022最新Java面试题及答案总结

    7. **`String`、`StringBuffer`和`StringBuilder`的异同**: 这三个类都用于处理字符串。`String`是不可变的,每次操作都会创建新对象,适合不可变字符串。`StringBuffer`和`StringBuilder`可变,提供在原对象上...

    java面试题.pdf

    1. String和StringBuilder、StringBuffer的区别: Java中String是不可变的字符串对象,这意味着一旦String对象被创建,它的值就不能被改变。在需要修改字符串时,实际上每次都会生成新的String对象。而StringBuilder...

Global site tag (gtag.js) - Google Analytics