`

java中字符串类型——String、StringBuffer和StringBuilder

    博客分类:
  • java
阅读更多
    Java中有3个常用的处理字符串的类:java.lang.String、java.lang.StringBuffer 和 java.lang.StringBuilder。这三个类的相同之处在于都是final类,不允许被继承。
   
    String  字符串常量
    StringBuffer  字符串变量(线程安全)
    StringBuilder   字符串变量(非线程安全)

    一般来说,在速度上,StringBuilder>StringBuffer>String


    String实现了3个接口:Serializable、Comparable<String>、charSequence,而StringBuffer和StringBuilder只实现了两个接口Serializable、charSequence。String的实例了通过compareTo方法进行比较,其他两个的实例不可以。


     String是字符串常量,即不可改变的对象。这时,你的脑海中可能产生这样的疑问,“不是吧,下面这段代码明明就是改变了String类型的值呀”
    String str="abc";
    str = str+1;
    System.out.print(str);  //输出为:abc1


    其实这时一种欺骗,java是这样解析这段代码的:首先创建一个str,将“abc”赋值给str,然后再创建一个新的str,将abc1赋值给新的str,原来的str会变成来及被GC回收。所以说,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新放入String对象,以包含修改后的字符串内容,而最初的String丝毫未动。因此,在字符串的值经常被修改的情况下,最好不要使用String类型,否则效率会很低。


    下面说说StringBuffer和StringBuilder,这两个类基本上差不多,最主要的区别是StringBuffer是线程安全的,在多线程的情况下不用考虑同步的问题。而StringBuilder是非线程安全的。因此在多线程的情况下,需要考虑同步问题。正因为StringBuilder本身不考虑同步的问题,因此StringBuilder的速度要快于StringBuffer,所以在单线程的情况下,优先考虑StringBuilder。
分享到:
评论

相关推荐

    java字符串的处理.pdf

    本篇将基于《java字符串的处理.pdf》的内容,深入探讨Java中字符串的基本概念、处理方式以及相关类库的使用。 #### 字符串的基本概念 字符串在Java中是一种特殊类型的对象,由一系列字符组成,通常用于存储和处理...

    CharSequence接口简述[java](csdn)————程序.pdf

    StringBuffer和StringBuilder则是在进行大量字符串操作时常用的类,特别是在多线程环境中。这两个类也实现了CharSequence接口,它们与String不同,允许在创建后修改其内容。StringBuilder是单线程环境下的选择,而...

    JAVA面试题解惑系列(六)——字符串(String)杂谈[收集].pdf

    总的来说,理解和掌握`String`类的`length()`方法、字符数组与字符串的区别以及Unicode编码在Java中的应用,是Java程序员必备的基础技能,也是面试中常见的问题。对于处理中文字符,需要特别注意字符编码的细节,以...

    超详细的Java复习知识点2019——个人笔记.zip

    笔记会涵盖字符串的创建、比较、操作方法,以及StringBuilder和StringBuffer的区别。 6. **输入输出流**:Java的IO流系统允许我们读写文件、网络数据等。笔记可能会介绍InputStream和OutputStream的基本使用,以及...

    动力节点老杜Java基础入门学习教程分享——常用类

    综上所述,本文介绍了 Java 编程语言中一些常用的类,包括 `String`、`StringBuffer`、`StringBuilder`、基本类型的包装类、日期类、数字类、`Random` 类以及枚举类型。这些类和接口是 Java 程序员经常使用的工具,...

    BAT 115个Java面试题和答案——终极(下)

    - 学习String类的特点,它是不可变的,了解StringBuffer和StringBuilder的区别。 - 掌握常用字符串方法,如indexOf(), substring(), replace()等。 3. **集合框架**: - 理解ArrayList、LinkedList、HashSet、...

    String容量大小区分

    根据提供的文件信息,本文将围绕“String容量大小区分”这一主题进行深入探讨,结合Java语言中的String类特性,解析字符串在不同场景下的容量变化及内存管理机制。 ### 标题和描述解读:“String容量大小区分” 该...

    Java软件开发实战 Java基础与案例开发详解 9-1 常用类介绍 共15页.pdf

    在Java中,定义了`String`和`StringBuffer`两个类来封装对字符串的处理。这两个类位于`java.lang`包中,可以直接使用而无需显式导入。 **9.1.1 字符串的创建** 在Java语言中,创建`String`字符串的方法有很多种。...

    Java语言程序设计教程(Java 7)——入门与提高篇03

    通过以上知识点的学习,读者将能够理解面向对象的基本概念,掌握Java中类的定义和对象的创建方法,并熟悉基本数据类型与封装类型的使用,数组的操作,字符串的处理,以及常用工具类的使用,为进一步学习Java程序设计...

    Java类库 java中常用的类 可以参考

    - `String(StringBuffer buffer)`:初始化一个新的 String 对象,它包含字符串缓冲区参数中的字符序列。 - **示例代码**: ```java public class StrOutput { public static void main(String[] args) { // 将...

    第10章成绩统计——数组与字符串.ppt

    Java中的`String`类是不可变的,而`StringBuffer`和`StringBuilder`则提供可变字符串的功能,适合于大量字符串拼接操作。例如: ```java StringBuffer sb = new StringBuffer(); sb.append("Hello").append(" ")....

    Day20——知识点总结

    为了解决String字符串操作导致的内存冗余,提高效率,Java中提供了StringBuffer和StringBuilder来操作字符串,并且提供了很多方法,便于程序员开发。 StringBuffer和StringBuilder中都有char类型可变长数组作为字符...

    java面试——南京-软通动力-Java中级.zip

    - **String、StringBuffer与StringBuilder**:比较String的不可变性,以及后两者在多线程环境下的优劣。 - **常用方法**:熟悉indexOf、substring、trim、concat、split等字符串操作。 6. **IO流** - **流的分类...

    阿里巴巴电话面试题目——Java

    例如,`"aa" + "bb"`会直接合并为一个新的字符串,而`"aa" + bb`(假设bb是字符串)在JDK 1.4中会通过StringBuffer或StringBuilder进行拼接,1.5及以后则使用StringBuilder。 14. **Java 基本数据类型**:Java有八...

    java面试题——葵花宝典

    String是final类,不可被继承,使用`StringBuilder`或`StringBuffer`进行字符串拼接以提高效率。 3. `int`与`Integer`的区别: - `int`是原始数据类型,而`Integer`是其对应的封装类。原始类型直接存储值,封装类...

    Java程序员面试宝典+.pdf

    #### 三、Java字符串处理 **3.1 String与StringBuffer的区别** - **知识点**: `String`是不可变的字符串,`StringBuffer`是可变的字符串。 - **解释**: `String`一旦创建,其值不能改变。而`StringBuffer`允许在...

    java私塾跟我学系列-java篇

    4. **字符串处理**:Java中的String类是非常重要的,会涉及字符串的创建、操作方法,以及StringBuilder和StringBuffer的使用。 5. **集合框架**:Java集合框架包括List、Set、Map接口及其实现类,如ArrayList、...

    个人面试题目(java)

    - 当涉及到大量字符串操作时,使用`StringBuilder`或`StringBuffer`比使用`String`更高效,因为它们提供了内部缓存机制,并且在操作过程中不会频繁创建新的对象。 #### 初始化大小 - 考虑到`StringBuffer`和`...

    StringBuilderSample

    在Java中,处理字符串时,我们常常会遇到String、StringBuilder和StringBuffer这三个类,而StringBuilder是其中效率较高且常用的类之一。本教程将深入探讨StringBuilder的使用方法、特点以及在实际开发中的应用。 ...

Global site tag (gtag.js) - Google Analytics