首页 > 试题广场 >

StringBuffer类对象创建之后可以再修改和变动.

[单选题]
StringBuffer类对象创建之后可以再修改和变动.
  • 正确
  • 错误
1.String对象不可变、StringBuffer对象可变的含义: 举个例子:String str = "aa"; str = "aa"+"bb"; 此时str的值为"aabb",但是"aabb"不是在开始的字符串"aa"后面直接连接的"bb",而是又新生成了字符串"aabb",字符串"aa"一旦被初始化,那么它的值不可能再改变了。 StringBuffer strb = StringBuffer("aa"); strb.append("bb"); 此时的strb的值也为"aabb",但是"aabb"是直接在开始的字符串"aa"后面连接的“bb”,并没有生成新的字符串。
发表于 2017-11-17 16:48:26 回复(11)
选A
String,StringBuffer,StringBuilder,都实现了CharSequence接口。
String是个不可继承类(final修饰),也是个不可变类(内部char数组被final修饰)。
StringBuffer和StringBuilder内部都是一般的动态数组,所以可变。前者是线程安全的,因为方法基本都被synchronized修饰了。
发表于 2018-07-10 09:47:22 回复(1)
stringbuffer是可变长度的,可通过append,insert,remove等方法改变其长度
发表于 2017-07-27 08:27:33 回复(3)
StringBuilder和StringBuffer是在类上加final,因此不代表不可变,而是代表不可继承。String不仅在类上加了final,还在在底层数组实现上加了final,导致String对象不可变。
发表于 2021-03-27 14:40:57 回复(0)
String a = "a";
String b = "b"; 
String c = a + b ; (返回的是堆中的对象)变量相加看堆
String d = "a"+"b"; (只创建一个对象而且是常量池中的),常量相加看常量池 
底层调用StringBulider的append方法 .
String 不可变:final 修饰了string 不可继承   String有属性 private fianl char [] values ,values不能改变(不能让values指向其他对象)可以修改value指向的字符数组里面的元素. String a = "a", a = "aa" ,或者 a = b(地址),都是可以的,注意不可变(需要功力)
多个对象引用指向同一个内容而且不用修改字符串内容用String 
需要修改字符串并且单线程StringBulider
需要修改字符串并且多线程StringBuffer
速度排行:StringBulider>StringBuffer>String(快-->慢)
码字不易,点赞为先~
发表于 2022-04-30 12:11:47 回复(0)
歧义,前面刚做过一道题考的是stringbuffer是final不可变。
发表于 2019-12-18 08:26:52 回复(1)
String 不可变,当程序字符串应用改变多时候,应该用StringBuffer(线程同步)或者StringBudiler(线程不同步,使用用单例模式)
发表于 2017-12-03 09:21:20 回复(0)
StringBuffer和StringBuilder都是字符串缓冲区,可以通过其中的append,insert等方法改变其长度。
不同点是StringBuffer是线程安全的,它从jdk1.0开始就有了,是StringBuilder的祖宗,StringBuilder则适用于单线程,出现于jdk1.5版本,效率较高,线程不安全
发表于 2019-03-02 23:47:45 回复(0)


图片说明

发表于 2019-04-19 08:39:38 回复(0)
String 不可变类 StringBuffer 可变类 线程安全
发表于 2017-08-04 21:00:00 回复(0)
StringBuffer含insert append remove等方法,都可以改变其地址中存储的值,而且对值的***作,直接在地址上进行,而不是类似于string重新创建一个新的string对象
发表于 2018-09-25 10:36:47 回复(0)
StringBuffer和StringBuilder。都是final.是不可以继承的。最终类的意思。他们都继承
AbstractStringBuilder类。在这个类中。 有个成员变量。 char[] value。 它不是final 修饰的是可变的。
而在String 类中。是有个自己的成员。
private final char value[];所以String类是不可变的。

发表于 2021-12-21 17:09:17 回复(1)
修改和变动这个总感觉是模棱两可的词,还不如给代码来得直接。
发表于 2023-11-05 23:06:25 回复(0)
🤙🤙🤙
发表于 2022-12-16 23:43:35 回复(0)
string不可变类,stringbuffer和stringbuilder是可变类可通过appen,insert等方法改变,stringbuffer线程安全stringbuilder线程不安全效率高
发表于 2022-11-01 15:43:09 回复(0)
这题不严谨,应该说StringBuffer类的对象吧
发表于 2022-05-29 18:40:15 回复(0)

String,StringBufferStringBuilder,都实现了CharSequence接口。

String是个不可继承类(final修饰),也是个不可变类(内部char数组被final修饰)。

StringBuffer和StringBuilder内部都是一般的动态数组,所以可变。前者是线程安全的,因为方法基本都被synchronized修饰了。StringBufferStringBuilder的祖宗,StringBuilder则适用于单线程,出现于jdk1.5版本,效率较高,线程不安全。

发表于 2022-04-14 16:34:48 回复(0)
stringbuffer是可变长度的,可通过append,insert,remove等方法改变其长度
发表于 2021-10-19 19:59:11 回复(0)
String是不可变字符串,因为有final修饰,StringBuffer和StringBulider是可变字符串,前者线程安全。
发表于 2021-09-29 22:31:28 回复(0)
题目读着好奇怪,修改变动什么,
发表于 2021-04-14 08:11:33 回复(0)