浅谈String、StringBuffer和StringBuilder类的区别

1、均可对字符串进行修改,但StringBuffer和StringBuilder类的对象进行多次修改时,不产生新的未使用对象。

  String 的底层是用final修饰的char数组,变量的内容不可变——内存占用高,资源利用率低;

  StringBuffer和StringBuilder类 则继承了AbstractStringBuilder类,其未使用final修饰char数组,变量内容动态更新——无效数组等待垃圾回收,减少资源占用;

2、StringBuilder相较于StringBuffer有速度优势。

3、StringBuilder和StringBuffer最大的区别是StringBuilder不是线程安全(不能同步访问)。

  StringBuffer在拼接字符串时通过使用同步锁,实现线程安全;

  StringBuilder未使用同步锁机制,故效率高于Stringbuffer;

原文地址:https://www.cnblogs.com/yangjuanjuan/p/11887547.html

时间: 2024-10-06 23:33:23

浅谈String、StringBuffer和StringBuilder类的区别的相关文章

浅谈String,StringBuffer和StringBuilder的区别

一.名词解释 String:字符串,并且是不可变对象: StringBuffer和StringBuilder:字符串,并且是可变的字符序列. 二.速度比较 因为StringBuffer是线程安全的,StringBuilder是线程不安全.所以速度比较:StringBuilder>StringBuffer>String. 总结:通常情况下使用String,在存在字符串拼接的时候一般使用StringBuilder,但是多个线程操作的时候使用StringBuffer.

Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)

java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在Abstra

【Java】String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

(转)String, StringBuffer和StringBuilder

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a"

Java StringBuffer和StringBuilder类

当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象. StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问). 由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBui

Java StringBuffer 和 StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象. StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问). 由于 StringBuilder 相较于 StringBuffer 有速度优势,

【String,StringBuffer和StringBuilder区别】

在实际java开发中,我们会经常使用到字符串连接的操作,以前我习惯喜欢用String的'+'来操作,觉得非常方便好用,最近认真学习了String,StringBuffer和StringBuilder这三个类,才发现使用String来连接字符串,代码性能会很低.下面我们就字符串连接来分析这三种方式. 1.String 打开String的源码,如图所示 会发现存储字符串的字符数值是final常量.再看String的构造方法,发现String的value值在构造方法就确定了值.这里有必要说明下关键字f

String,StringBuffer和StringBuilder的异同

                                                                String,StringBuffer和StringBuilder的异同 String,StringBuffer和StringBuilder的的源码已经在本博客的JDK源码学习系列中有了详细的介绍: String 源码: http://blog.csdn.net/sheepmu/article/details/23303837 StringBuffer 和StringB

Java String, StringBuffer和StringBuilder实例

1- 分层继承2- 可变和不可变的概念3- String3.1- 字符串是一个非常特殊的类3.2- String 字面值 vs. String对象3.3- String的方法3.3.1- length()3.3.2- concat(String)3.3.3- indexOf(..)3.3.4- substring(..)3.3.5- replace3.3.6- 其它实例4- StringBuffer vs StringBuilder 1- 分层继承 当使用文本数据时,Java提供了三种类别,包括