首页 > 试题广场 >

String、StringBuffer、Stringbuil

[问答题]
String、StringBuffer、Stringbuilder有什么区别
最后一句话是错了吧
发表于 2022-03-18 12:26:57 回复(1)
StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样
String:不可变字符序列,效率低,但是复用率高。
StringBuffer:可变字符序列、效率较高(增删)、线程安全
StringBuilder:可变字符序列、效率最高、线程不安全
发表于 2022-03-26 10:20:07 回复(4)
m
发表于 2022-03-11 15:47:46 回复(1)
三者都是引用数据类型,都是对字符串进行相关操作的类。三者的区别主要有以下几点:1、对象创建的区别:String可以直接字符串赋值创建,或者new String()创建,前者会判断字符串常量池中是否存在,如果存在直接引用,不存在则创建一个在字符串常量池中,后者会在堆内存中new一个对象,同时如果字符串常量池中没有值相同的,也会给字符串常量池创建一个。StringBuilder和Stringbuffer则都abstractStringBuilder的子类,需要在堆内存中new一个。2、值是否可变的区别:String由于final修饰的原因,其值是不可改变的,若要改变,只能采用引用改变来达到值改变的效果。StringBuilder和StringBuffer都可以实现对值的修改,常用方法有append()方法等。3、数据拼接的区别:String可以直接用字符串拼接相加实现,这种情况实在编译的时候就进行了。而倘若是两个变量的相加(String +),那其本质是用到了StringBuilder的append()方法,而如果不出现频繁建stringBuilder对象的情况下,其实速度还是很快的。而StringBuilder由于是线程不安全的,不用考虑锁的开销,其速度也是很快的,比StringBuffer要快(其是线程安全的)。4、线程安全的区别:String是不可变类,所以是线程安全的。StringBuilder线程不安全,StringBuffer线程安全。
编辑于 2022-05-18 17:42:43 回复(0)
答案最后一句错了,多线程高并发情况下应该使用线程安全的StringBuffer类!
发表于 2022-04-16 10:57:45 回复(2)
2en头像 2en
string内的char数组被final修饰创建的对象都是不可变的,而buffer和builder封装的字符串对象是可以被改变的,string builder是线程不安全的,stringbuffer是线程安全的,因为buffer中的方法都有synchronized关键字,因此builder的效率高过buffer,所以在多线程共享的字符串对象应该使用buffer,其他环境下使用builder
发表于 2022-05-22 15:45:48 回复(0)
String是final修饰不可被继承不可变,即时修改也是新建一个变量,String通过不变的特性实现了线程之间的可见性,一定条件下可以保证线程安全。StringBuffer和StringBuilder对象是可变的。StringBuffer实现了Synchronize封装使得它线程安全,而StringBuilder是线程不安全的。所以从运行速度来说,StringBuilder>StringBuffer>String
发表于 2022-05-11 11:33:26 回复(0)
线程安全:String和StringBuffer是线程安全的,StringBuilder是线程不安全的。 性能:StringBuilder>StringBuffer>String 可变性:String不可变,其他的两个可变。
发表于 2022-05-07 14:40:05 回复(0)
String是不可变的(final修饰),创建以后的值是不可以修改的,当修改以后,重新new了一个String, 从而效率比较低,占用大量的内存空间 而StringBuilder可以看做是一个容器,创建以后里面的内容是可以修改的,提高了效率, 主要应用于字符串拼接、反转等,场景多为单线程操作字符串,其线程不安全 StringBuffer同样应用于频繁操作字符串,但是其原码加synchronized,其线程是安全的, 因为加了synchronized,获取锁和释放锁也还是需要时间的,其效率较低(比String效率高,比StringBuilder低) 从运行效率看,StringBuilder>StringBuffer>String String适合少量字符串的操作 StringBuilder适合单线程大量数据的操作 StringBuffer适合多线程大量数据的操作
发表于 2022-10-14 20:08:16 回复(0)
String 是一个不可变类,StringBuffer和StringBuilder是可变的; String和StringBuilder不是线程安全的,StringBuffer是线程安全的; StringBuilder的效率比StringBuffer的执行效率高
发表于 2022-04-26 14:45:17 回复(2)
String,StringBuffer、StringBulder都可以操作字符串,但是String是不可变的,通过看源码可以看出底层是被final修饰的byte数组, StringBuffer和StringBulder都是可变序列,但是StringBuffer 是线程安全,而Stringbulder是线程不安全,StringBulder的效率最高。
发表于 2022-08-30 11:21:36 回复(0)
Stringbuffer和StringBuilder的方法和功能是等价的, Stringbuffer的方法都有synchronized修饰,所以StringBuffer是线程安全的。 StringBuilder的方法是没有synchnuzed修饰的,所以StringBuilder是线程不安全的。 在单线程模式下,StringBuilder的效率比StringBuffer跟快,因为StringBuilder没有加锁,不具备线程安全,而StringBuffer每次都要判断锁,效率跟低。
发表于 2022-05-13 09:44:53 回复(0)
String是一个不可变类,在一个对象创建后,直到这个对象销毁为止,对象中的字符序列都不能被改变。stringBuilder和stringBuffer对象则代表一个字符序列可变的字符串,区别则是有没有考虑线程安全
发表于 2022-05-07 18:20:59 回复(0)
关于String、StringBuffer、Stringbuilder区别从四个方面来理解 1.值可变性: String是不可变的,如果尝试修改String的值,都会产生一个新的字符串对象。 StringBuffer和StringBuilder是可变的,修改不会产生新的对象。 2.线程安全: String是线安全的,因为它不可变。 StringBuffer是线程安全的,因为它里面的每个操作方法都加了synchronized关键字。 StringBuilder是线程不安全的,单线程下使用StringBuilder效率最高。 3.性能: String效率最低,其次是StringBuffer,StringBuilder性能最好 因为String不可变,所以每次做字符串拼接的时候一直创建新的对象和分配内存空间 StringBuffer加了同步锁,StringBuilder是无阻塞的。 4.数据存储: String存储在字符串常量池中。 StringBuffer和StringBuilder存储在堆内存中。
编辑于 2024-04-16 09:52:02 回复(0)
string类是用final修饰的不可以被继承的,string类的字符串是不可变的字符串,也就是说从这个字符串从被创建到销毁都不能被改变,而stringbuffer是可变序列字符串,可以通过append,insert,reverse等方法对字符串进行操作,等得到了想要的字符串后通过tostring方法装换成字符串,而stringbuilder和stringbuffer的区别在于stringbuffer是线程安全的,所以stringbuilder的性能更好
发表于 2023-06-24 19:48:20 回复(0)
String是不可变对象,因为其底层是一个被final修饰的char数组,用于保存字符串中对应的字符。所以String对象一旦创建,其内容就不可被修改。每次修改都会创建新的对象。StringBuilder和StringBuffer是可变的字符串对象,当字符串需要频繁修改时,建议使用StringBuffer或StringBuilder,它们提供了appen()、insert()、delete()、reverse()等方法来对字符串进行操作。当涉及到线程安全时,建议使用StringBuffer.因为其底层对方法添加了synchronized锁关键字,是线程安全的。
发表于 2023-06-07 19:41:21 回复(0)
🆗
发表于 2023-03-05 20:23:03 回复(0)
String final修饰不可变,直接赋值以后常量池来管理,buff可变且安全,build不安全
发表于 2023-02-13 01:47:07 回复(0)
1、String是final修饰的,是不可变(变了会生成一个新的字符串),而StringBuffer和StringBuilder可变; 2、StringBuffer线程安全,StringBuilder线程不安全,但在单线程下效率更高;
发表于 2023-02-12 13:27:46 回复(0)
String是一个不可变类,是线程安全的;StringBuilder和StringBuffer都是可变类的,可以通过append(),reserve()等方法改变字符串序列,StringBuilder是线程不安全的,StringBuffer是线程安全的;因为StringBuffer类中的方法加了synchronized锁,所以性能比StringBuilder低。
编辑于 2023-04-03 17:22:48 回复(0)