首页 > 试题广场 >

在JAVA中,下面关于String类和StringBuffe

[单选题]
在JAVA中,下面关于String类和StringBuffer类的描述正确的是那一个?
  • StringBuffer类的对象调用toString()方法将返回String类型的结果
  • 两个类都有append()方法
  • 可以直接将字符串“test”赋值给声明的String类和StringBuffer类的变量
  • 两个类的实例的值都能够被改变
  StringBuffer类的对象调用toString()方法:
public synchronized String toString() {
	return new String(value, 0, count);
    }

发表于 2015-08-07 20:31:46 回复(0)
A选项为什么正确?StringBuffer对象执行toString只是返回一个String对象这个对象本身一点都没有变
发表于 2016-02-04 13:31:33 回复(0)
  • StringBuffer类的对象调用toString()方法将转换为String类型  这个正确
  • 两个类都有append()方法  String类没有append方法
  • 可以直接将字符串“test”复制给声明的Stirng类和StringBuffer类的变量  引用类型只有String可以直接复制,其他的都要new出来
  • 两个类的实例的值都能够被改变   StringBuffer类可以直接改变它的内容,不用重新分配地址; String 对象/ 实例   是不可以被改变的。
  • String:
    是对象不是原始类型.
    为不可变对象,一旦被创建,就不能修改它的值.
    对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
    String 是final类,即不能被继承.

    StringBuffer:
    是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
    它只能通过构造函数来建立,
    StringBuffer sb = new StringBuffer();
    !!!:不能通过赋值符号对他进行付值. 
    sb = "welcome to here!";//error
    对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
    中赋值的时候可以通过它的append方法.
    sb.append("hello");

    字符串连接操作中StringBuffer的效率要比String高:
    String str = new String("welcome to ");
    str += "here";
    的处理步骤实际上是通过建立一个StringBuffer,然后调用append(),最后
    再将StringBuffer toSting()(toString方法:StringBuffer类型转化成String类型);
发表于 2015-11-05 09:45:21 回复(9)
A. StringBuffer类调用toString()方法后将转换为String类型   正确
B. String类型中没有append()方法,要追加字符串”+“即可,也没有必要 append
C. 可以直接将字符串“test”复制给声明的Stirng类的变量,而StringBuffer类的不行
D. String 实例 是不可变的
String 对象/实例 是不可以被改变的。

当new一个String对象时,JVM会在内存中创建一个String对象,当另外一个String对象值与它一样时,会将该对象直接指向对应的地址。

1
2
3
String a = "abc";
String b = "abc";
System.out.println(a == b);//true
发表于 2015-10-04 00:04:50 回复(8)
A. StringBuffer类调用toString()方法后将转换为String类型   正确
B. String类型中没有append()方法
C. 可以直接将字符串“test”复制给声明的Stirng类的变量,而StringBuffer类的不行
D. String类的实例只能被改变,因为String是不可变的
发表于 2015-03-21 22:14:50 回复(9)
如果答案是A只想说一句:
  • StringBuffer类的对象调用toString()方法将返回String类型的结果 这样是对的,
如果
  • StringBuffer类的对象调用toString()方法将转换为String类型   这是错的,StringBuffer对象toString()方法之后 该对象还是StringBuffer对象,只不过该方法的返回值是个String对象!!!!

发表于 2015-03-11 12:05:42 回复(7)
  • StringBuffer类的对象调用toString()方法将转换为String类型  这个正确
  • 两个类都有append()方法  String类没有append方法
  • 可以直接将字符串“test”复制给声明的Stirng类和StringBuffer类的变量  引用类型只有String可以直接复制,其他的都要new出来
  • 两个类的实例的值都能够被改变   StringBuffer类不可改变
发表于 2015-06-14 21:43:32 回复(4)
D.从内存情况看 String类型的是在需要变化的过程中 实际是创建了新的值对象 然后再使用垃圾回收将原来的不要的string回收掉 这就不能说成是值发生了改变 StringBuffer类是直接对该值进行操作使其改变 。
另外引申一点 StringBuffer比String更加节省空间
发表于 2015-11-08 11:04:59 回复(0)

StringBuffer的toString方法,本质上是返回一个String类型,这个结果由 StringBuffer类中的toStringCache[ ]数组构成的,是value[ ]的拷贝,并不影响StringBuffer类主体的value[ ]部分。


这是刚实例化StringBuffer的时候

这是调用tostring方法以后

至于B、C选项,String类没有append方法,StringBuffer不能直接赋值。

至于D答案:String类是不可变的,首先被设计成一个final类,不可继承,value这个变量是private的,并且没有提供setValue, 等公共方法来修改这些值,所以在String类的外部无法修改String。也就是说一旦初始化就不能修改, 并且在String类的外部不能访问这个成员。此外,value这个变量是final的, 也就是说在String类内部,一旦这个值初始化了, 也不能被改变。

但其实可以通过反射的方法修改String的值,这里就不多说了。

编辑于 2019-04-02 21:52:11 回复(0)
引用类型只有String可以直接复制,其他的都要new出来
发表于 2019-09-10 19:30:07 回复(0)
1. 分析选项A: -  StringBuffer 类有 toString 方法,调用该方***返回一个 String 类型的结果,该结果包含 StringBuffer 对象中的字符序列。所以选项A正确。 2. 分析选项B: -  String 类没有 append 方法, String 对象一旦创建其值是不可变的。而 StringBuffer 类有 append 方法用于追加字符或字符串等内容。所以选项B错误。 3. 分析选项C: - 可以直接将字符串 "test" 赋值给 String 类的变量,例如 String str = "test"; 。但是不能直接将字符串赋值给 StringBuffer 类的变量,需要通过构造方法来创建 StringBuffer 对象,如 StringBuffer sb = new StringBuffer("test"); 。所以选项C错误。 4. 分析选项D: -  String 类的实例的值是不可改变的,每次对 String 对象进行操作(如拼接等)实际上是创建了一个新的 String 对象。而 StringBuffer 类的实例的值可以被改变,通过 append 等方法可以修改其内部的字符序列。所以选项D错误。 答案是A。
发表于 2024-11-11 19:30:25 回复(0)
Strain创建的实力不能变string。Buffer创建的实力可以变使俊没有a pen的方法是军buff有a pen的方法。
发表于 2025-06-30 22:55:52 回复(0)
B:String类没有append方法

C:不能直接将字符串给一个StringBuffer类型的变量

D:StringBuffer类的是可以改变的 但是String类的实例是不可以改变的
发表于 2025-05-05 15:44:55 回复(0)
String 是final修饰的不可继承不可修改,如果使用+进行拼接都是新建String对象。StringBuff对象需要直接new后才能使用,不能直接赋值,底层是可变长数组初始长度16不够扩容2倍
发表于 2019-08-31 10:52:20 回复(0)
看成StringBuffer和StringBuilder很尴尬
发表于 2019-03-02 15:41:49 回复(0)
StringBuffer类的对象调用toString()方法将转换为String类型,所以正确。
String是没有append方法的

发表于 2019-01-17 15:14:06 回复(0)
C选项,StringBuffer和StringBuilder使用append()添加字符串
编辑于 2018-10-16 17:12:13 回复(0)
选A
B、String没有append方法
C、不能直接赋值给StringBuffer,只能append
D、String是不可变类,因为内部的char[]数组被final修饰了。
发表于 2018-08-08 15:49:38 回复(0)
StringBuffer需要通过构造方法对其赋值
发表于 2018-04-25 11:35:15 回复(0)
针对c 引用类型只有String可以直接复制,其他的都要new出来 所以StringBuffer不能直接负值字符串
发表于 2017-10-22 23:57:15 回复(0)