问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

String,SringBuffer和 StringBuilder的区别

发布网友 发布时间:2022-04-14 04:10

我来回答

1个回答

热心网友 时间:2022-04-14 05:40

String是一个类,但却是不可变的,所以String创建的算是一个字符串常量,StringBuffer和StringBuilder都是可变的。所以每次修改String对象的值都是新建一个对象再指向这个对象。而使用StringBuffer则是对StringBuffer对象本身进行操作。所以在字符串j经常改变的情况下,使用StringBuffer要快得多。
但在某些情况下:
Java代码
String S1 = “Who” + “ is” + “ faster?”;
StringBuffer Stb = new StringBuilder(“Who”).append(“ is”).append(“ faster?”);
Java代码
String S1 = “Who” + “ is” + “ faster?”;
StringBuffer Stb = new StringBuilder(“Who”).append(“ is”).append(“ faster?”);
S1的素对会比Stb快得多, 是因为JVM把String对象的拼接解释成了StringBuffer对象的拼接,其实在JVM就是:
Java代码
String S1="Who is faster?";
Java代码
String S1="Who is faster?";

不过如果,字符串是来自其他对象,如:
Java代码
String s1="Who";
String s2=" is";
String s3=" faster?";
String st=s1+s2+s3;
Java代码
String s1="Who";
String s2=" is";
String s3=" faster?";
String st=s1+s2+s3;

这个时候,String的速度就比不上StringBuffer了。

StringBuffer和StringBuilder

在操作字符串对象,StringBuiler是最快的,StringBuffer次之,String最慢。
Java代码
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

ublic final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
Java代码
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

ublic final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

可以看到StringBuffer和StringBuilder都继承继承了同一个抽象类。

Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。

StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
String,StringBuffer和StringBuilder的区别

StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法...

string和stringbuffer和stringbuilder的区别

string和stringbuffer和stringbuilder的区别如下:1、线程安全:StringBuffer:线程安全,StringBuilder:线程不安全。因为StringBuffer的所有公开方法都是synchronized修饰的,StringBuilder并没有StringBuilder修饰。2、缓冲区:StringBuffer每次获取toString都会直接使用缓存区的toStringCache值来构造一个字符串。而StringBui...

“String、StringBuffer和StringBuilder”之间的区别是什么?

1、类型不同:String是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。StringBuffer是字符串变量,它的对象是可以扩充和修改的。StringBuilder是一个可变的字符序列。2、作用:String类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。StringBuffer...

string和stringbuffer和stringbuilder的区别

string和stringbuffer和stringbuilder的区别:1、可变与不可变2、初始化方式3、字符串修改方式4、是否实现了equals方法5、是否实现了hashCode方法1、可变与不可变 String类是一个不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁。StringBuffer与StringBuilder都继承自AbstractStr...

string和stringbuffer和stringbuilder的区别是什么?

string和stringbuffer和stringbuilder的区别 1、String是字符串常量,而StringBuffer和StringBuilder是字符串变量。由String创建的字符内容是不可改变的,而由StringBuffer和StringBuidler创建的字符内容是可以改变的。2、StringBuffer是线程安全的,而StringBuilder是非线程安全的。StringBuilder是从JDK 5开始,为String...

string,stringbuffer和stringbuilder的区别

string、stringbuffer和stringbuilder的区别:string:是Java中的基本字符串类型,它是一个不可变的字符串对象。一旦创建了一个string对象,就不能改变它的值。每次对string对象进行修改,都会创建一个新的对象。因此,在处理大量字符串操作时,使用string可能会导致性能问题。StringBuffer:是一个可变的字符串...

String 和StringBuffer StringBuild 的区别:

1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。3. StringBuilder:线程非安全的 StringBuffer:线程...

String、StringBuffer和StringBuilder的区别是什么?

速度有区别三者在执行速度方面的比较:三者在执行速度方面的比较:StringBuilder > StringBuffer > String tring和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。string是C++、java等...

深入理解String、StringBuffer和StringBuilder类的区别

它们的相同点是都用来封装字符串;都实现了CharSequence接口。它们之间的区别如下:一、可变与不可变 String类是一个不可变类,即创建String对象后,该对象中的字符串是不可改变的,直到这个对象被销毁。StringBuffer与StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存...

Java中String,StringBuilder和StringBuffer的区别

在Java中,String,StringBuilder和StringBuffer的区别有:String是对象不可变的(因为它的原理是一个final修饰的字符数组),而StringBuilder和StringBuffer是对象可变的,它们两个都继承AbstractStringBuilder类。从线程安全角度考虑,String是对象不可变的,显然线程安全。StringBuffer对方法加了同步锁或者对调用的...

IA5和埃安S的区别 S和N的区别 I2C和SIO的区别 S与Sn的区别 寺和庙的区别 S和es区别 S的区别 S5700 S5700S区别 C与S的区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沈阳大道教育的老师看起来比较年轻,教学经验丰富吗? 为什么老师教学经验越丰富,教学效果越差劲 广联达bim使用教程 一个人怎么拍摄视频 电动窗帘轨道卡住了怎么办 7岁儿童牙齿钙化怎么办 牛皮纸压泡纸机 去女友家送花选什么,拜访女友家送花推荐 新买的笔记本硬盘直接换上就可以用吗? 五色饭富含哪些营养价值 壮家人喜爱五色饭把它作为什么的象征_百度知 ... 化粪池的原理 现在大三,想要专升本,会计专业,请问难吗 会计专升本难吗 会计专业专升本有多难 专升本会计专业难考么 学会计专业,专升本难吗? 专升本难不难的,我学的会计专业 我是学会计专业的,专升本难吗?请参加专升本的人回答问题 专升本:江西财经大学的会计专业难考吗 统招专升本考试很难过吗(会计专业)? 海南专升本难嘛?海南专升本难?统招的,会计专业 1985年属牛11月|8女性的命运是什么 85年正月19下午三点半出生的属牛女性命好不好? 我是女的,1985年农历2月18出生,属牛的,阳历4月7号,命运怎么样啊,哪位大师会看呀 1985年属牛牛 女的 命运 1985年的阴历11月26早上2点03 出生人的财运婚姻如何 属牛,女85年农厉九月初六生,命好吗 kfifo和ring buffer的区别 为什么看手机看久了头会晕,想吐 玩手机玩久了会不会出现恶心头晕的症状? 晚上玩着手机,头突然很晕,还呕吐,还很难受,持续了一个多小时。之前也有个一次头晕,但没有昨晚的严重 QQ中举报好友会怎样 南京开发一个APP到底需要多少钱 在南京做软件工资怎么样? 南京学软件开发学费贵不??? 有南京的app开发大神吗? 数据包捕获技术的核心是什么 java 并发框 架有 disruptor实例 2021年巴彦淖尔市临河区申请家庭农场需要什么条件 申办家庭农场需要哪些条件? 家庭牧场政策及补贴 2021家庭农场政策 家庭农场住房申请条件 2021年甘肃省平凉市对家庭农场有哪些扶持政策 2021年家庭农场可建办公室吗? 家庭农场有什么补贴政策 现代化家庭农场的规划与建设2021年还要补办场的吗 家庭农场注册企业法人还是个人独资 小型家庭农场补贴标准2021 家庭农场有哪些扶持政策 iPhone6不小心将手机里面照片上传到iCloud里面,现在手机相册里面照片打不开