`
祖祖cool
  • 浏览: 52132 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

StringBuilder、StringBuffer和String三者的联系和区别

阅读更多
StringBuilder、StringBuffer和String三者的联系和区别

1. String 类
     String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
   String a = "a"; //假设a指向地址0x0001
   a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。
   因此String的操作都是改变赋值地址而不是改变值操作。

2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

   StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
   StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
   StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

3.StringBuffer
  StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。

4.线程安全
StringBuffer 线程安全
StringBuilder 线程不安全

5.速度
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

6.总结
(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
6
5
分享到:
评论

相关推荐

    String、StringBuilder、StringBuffer的区别

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

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

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

    String-StringBuffer-StringBuilder

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

    java String、StringBuilder和StringBuffer的区别详解

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

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

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

    浅谈java中String StringBuffer StringBuilder的区别

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

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

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

    JavaSE之StringBuilder类与String类

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

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

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

    07 StringBuilder

    尽管`StringBuilder`和`StringBuffer`都提供了相似的方法来操作字符串,但两者之间存在以下关键区别: 1. **线程安全性**:`StringBuffer`的所有方法都是同步的,这意味着它在多线程环境中是线程安全的。而`...

    java基础String类选择题练习题

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

    java面试问题总结

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

    java String Vector简单初学者代码

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

    java三种字符串处理差别

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

    面试总结java工程师

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

    探秘Java中StringStringBuilder以及S

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

    String类简介

    7. `equals(Object obj)` 和 `equalsIgnoreCase(String anotherString)`: 比较字符串内容是否相等,后者忽略大小写。 8. `compareTo(String anotherString)`: 按字典顺序比较字符串。 **四、字符串连接** 使用`+`...

    java精典编程100例 9

    `StringBuffer`是Java语言中用于处理字符串的一个类,它与`String`和`StringBuilder`一起构成了Java中处理字符串的核心类。与不可变的`String`不同,`StringBuffer`可以对字符串进行修改而不会创建新的对象。这对于...

    面试题汇总-整理一版.pdf

    Java中有三种主要的字符串操作类:String、StringBuffer和StringBuilder。 - String是不可变的,每次修改都会创建新对象,不适合频繁修改字符串内容。 - StringBuffer和StringBuilder在可变性上相同,可以在原...

Global site tag (gtag.js) - Google Analytics