string和stringbuffer有什么区别
发布网友
发布时间:2022-03-23 00:09
我来回答
共3个回答
懂视网
时间:2022-03-23 04:30
string和buffer的主要区别是:
String而是一个类,它被用来表示字符序列,其字符本身符合 Unicode 标准,初始化方式有两种。而StringBuffer是一个具有对象引用传递特点的字符串对象,可以调用其方法动态的进行增加、插入、修改和删除操作,且不用像数组那样事先指定大小,从而实现多次插入字符,一次整体取出的效果,因而操作字符串非常灵活方便。
热心网友
时间:2022-03-23 01:38
通过查看string的所有成员方法你可以发现对于string的任何操作都是返回的一个新的string实例,也就是说对于string的操作都是分配了新的内存空间去得到的。
但对于stringbuffer你对它的操作如果可以在你设置的初始长度中解决,系统会在当前的stringbuffer中对应的内存空间执行你要的操作,而返回的stringbuffer仍然是前一个实例,而如果对stringbuffer的操作使得stringbuffer必须扩展它的缓冲区长度,则系统将会给你开辟一个新的stringbuffer实例
热心网友
时间:2022-03-23 02:56
String是一种强不变类型,它的值一旦被赋予之后,在内存中的相应位置上的值就不会变化了.即便你用String的方法:concat(String
str)和replace(char
oldChar,
char
newChar)等等,所返回的值都是新创建的一个String类型,而不是在原内存地址上去更改,因此比如这样的一个赋值:
String
s="Hello
Bai";
s=new
String("Hello
Bai");
这样在内存中其实是开辟了两个内存空间来存放Hello
Bai,前面那个对象依然留在内存当中,而:
s=s.concat("!");
加上这样一句,s的值变为了Hello
Bai!,在内存中实际上是新创建了一个String对象装Hello
Bai!,而原有的Hello
Bai依然存在
StringBuffer就不同了,它是种可变类型,它的值被赋予之后,在运行期同样可以通过它的方法,如append(String
str)
操作内存上的值,而不仅仅是它的引用而已,也就是说同样的对s的值进行修改
StringBuffer
s="Hello
Bai";
s.append("!");
这样的操作其实只创建了一个StringBuffer的对象,大大节约了内存的开销
这样明白些了吧,赫赫
请采纳。