黑马程序员技术交流社区
标题:
String和StringBuffer的区别是什么?
[打印本页]
作者:
你为谁归来
时间:
2014-4-14 17:41
标题:
String和StringBuffer的区别是什么?
除了基本上的增删该查,长度,在内存的处理上还有其他的区别吗?希望可以详细点,谢谢!
作者:
anqi
时间:
2014-4-14 17:50
本帖最后由 anqi 于 2014-4-14 17:51 编辑
String
你可以认为String是常量。为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承. 对系统的开销极大。只在结果确定或者字符操作很少的时候才实用。
StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();不能通过付值符号对他进行付值. sb = "hello";//错误的
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中付值的时候可以通过它的append方法.
sb.append("hello");
StringBuffer对系统的开销小,但现在StringBuffer也落伍了,有了新的StringBuilder(线程不安全)更实用。
作者:
Sunday
时间:
2014-4-14 18:05
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
String类型的字符串里面的内容不能修改,如需要修改,编译器会新创建一个字符串对象,有时在编程中并不希望这样,希望能改变字符串对象里的内容,就需要用StringBuffer类,即字符串缓冲区类。
StringBuffer对象与String对象最大的不同在于StringBuffer不仅能修改字会串的长度,还能修改里面的内容,此外,在多线程编程中,StringBuffer对象较为安全
StringBuffer类提供了很多对字符串的修改操作,如append() 追加操作.
append(value);
//参数value可以是任意基本数据类型以及Object的实例,表示插入的内容。
StringBuffer sb = new StringBuffer(); //sb内容为空
sb.append(true); //追加布尔数据
sb.append(1.23); //追加双精度数据
sb.append('A'); //追加字符串数据
sb.append("append"); //追加字符串
//最后得到的sb的内容为"true1.23Aend"
复制代码
StringBuffer sb = new StringBuffer(); //sb内容为空
sb.append(true); //追加布尔数据
sb.append(1.23); //追加双精度数据
sb.append('A'); //追加字符串数据
sb.append("append"); //追加字符串
//最后得到的sb的内容为"true1.23Aend"
insert(int offset, value); //插入操作
replace(int start, int end, String str); //替换操作,start 和 end都是整数,分别表示子串在原字符串的起始位置和结束位置(不包括字符串的结束位置)。str是一个字符串对象,表示用于替换的内容。
delete(int start ,int end); //删除操作 start 和 end都是整数,分别表示删除的子串在原字符串中的起始位置和结束位置(不包括结束位置的字符)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2