`

Java中的String,StringBuilder,StringBuffer三者的区别

    博客分类:
  • java
阅读更多

  java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在  

  面试中会问到的问题。现在总结一下,看看他们的不同与相同。

 

  1.可变与不可变

 

 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可

 

变的。

   

     private final char value[];

 

  StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是

 

使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。

    

     char[] value;

 

2.是否多线程安全

  

     String中的对象是不可变的,也就可以理解为常量,显然线程安全

 

 AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如

 

expandCapacity、append、insert、indexOf等公共方法。

 

  StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

 

  

 



 

  总结 :StringBuilder并没有对方法进行加同步锁,所以是非线程安全的

 

  3.StringBuilder与StringBuffer共同点

 

 StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。

  

   抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不

 

 需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

 

  StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如

 

super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

 

  最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

 

            

 

 

 

 

 

 

 

   转载:https://www.cnblogs.com/xudong-bupt/p/3961159.html

  • 大小: 46.6 KB
  • 大小: 39 KB
分享到:
评论

相关推荐

    String&StringBuffer&StringBuilder三者之间的区别-经典解析.doc

    在Java编程语言中,String、StringBuffer和StringBuilder都是用来处理字符串的重要类,它们各自有特定的使用场景和特性。理解这三个类的区别对于任何Java开发者,无论是初学者还是经验丰富的程序员,都是非常重要的...

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

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

    String-StringBuffer-StringBuilder

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

    String、StringBuilder、StringBuffer的区别

    在 Java 中,String、StringBuilder 和 StringBuffer 三者都是字符串处理类,但是它们之间存在着本质的区别。本文将从执行速度、线程安全性、字符串处理方式等方面对这三者进行比较和分析。 首先,从执行速度方面来...

    浅谈java中String StringBuffer StringBuilder的区别

    总结一下,三者在运行时间上的效率排序大致为:`String` > `StringBuffer` > `StringBuilder`。如果你在单线程环境中处理字符串,推荐使用`StringBuilder`,因为它既高效又灵活。而在多线程环境中,为了保证线程安全...

    java String、StringBuilder和StringBuffer的区别详解

    1. **都是字符串类**:这三者都是Java中用于处理文本的类,其中`String`是最基础的字符串类,而`StringBuilder`和`StringBuffer`则是`String`的可变版本。 2. **基于数组存储**:它们内部都是用字符数组来存储字符串...

    java基础String类选择题练习题

    综上所述,这份Java基础String类选择题练习题主要覆盖了String和StringBuffer类的基础概念、基本操作方法以及它们之间的区别等内容。通过这些练习题,学习者可以更好地理解和掌握这两个类的使用方法,为实际编程工作...

    全面解释java中StringBuilder、StringBuffer、String类之间的关系

    Java中的String、StringBuffer和StringBuilder类都是用于处理字符串的,但它们之间存在显著的区别和应用场景。下面将详细解析这三个类的关系及其特点。 1. **String类** - String类是不可变的,这意味着一旦创建了...

    辨析Java中的String与StringBuffer及StringBuilder字符串类

    在Java编程语言中,处理字符串是常见的任务,有三种主要的字符串类:String、StringBuffer和StringBuilder。理解它们之间的区别和应用场景对于编写高效的代码至关重要。 1. **String类**:String是Java中的字符串...

    java String Vector简单初学者代码

    Java中的String、Vector和Scanner是三个非常基础且重要的概念,对于初学者来说,理解它们的用法和原理是学习Java编程的关键步骤。 首先,我们来深入理解`String`类。在Java中,`String`是一个不可变的字符序列,这...

    JavaSE之StringBuilder类与String类

    ### JavaSE之StringBuilder类与String类 ...以上内容详细介绍了如何使用`String`和`StringBuilder`类,以及它们之间的区别。这对于JavaSE入门者来说是非常实用的知识点,希望这些知识点能够帮助到正在学习JavaSE的你。

    07 StringBuilder

    ### Java中的StringBuilder详解 在Java编程语言中,`StringBuilder`是一个非常重要的类,它提供了一种高效地构建和操作字符串的方式。与`String`不同,`StringBuilder`对象是可变的,这意味着可以在不创建新对象的...

    java三种字符串处理差别

    根据不同的应用场景和需求,Java提供了多种处理字符串的方式,其中最为常见且重要的三种方式分别为:`String`(字符串常量)、`StringBuffer`(线程安全的字符串变量)以及`StringBuilder`(非线程安全的字符串变量...

    探秘Java中StringStringBuilder以及S

    在Java编程语言中,字符串处理是一项非常常见的任务。在Java中,有三种主要的类用于创建和操作字符串:`String`, `StringBuilder...在实际开发中,熟练掌握这三者之间的区别和用法,能够有效地提升代码质量并优化性能。

    面试总结java工程师

    本文总结了 Java 面试中的重要知识点,涵盖了基本数据类型、抽象类和接口、方法重载和重写、String、StringBuffer 和 StringBuilder 三者的区别、判断字符串是否为空、集合的理解等方面。 1. 基本数据类型 Java 中...

    +作为java中的拼接字符串的功能

    本文将深入探讨如何在Java中使用"+"运算符进行字符串拼接,并分析其性能影响及与`StringBuffer`、`StringBuilder`之间的区别。 #### 一、"+"运算符进行字符串拼接 在Java中,可以使用"+"运算符来连接两个或多个...

    java面试问题总结

    9.StringBuffer和StringBuilder的区别?(实际面试题) 1.在执行速度方面的比较:StringBuilder 快于 StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符...

    珍藏资料Java面试题大全(Java基础).doc

    Java 提供了 String、StringBuffer 和 StringBuilder 三种字符串类型。String 是不可变类,StringBuffer 和 StringBuilder 是可变类。 七、Java 中的goto goto 是 Java 中的保留字,暂时还不是 Java 的关键字。

Global site tag (gtag.js) - Google Analytics