A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 你为谁归来 中级黑马   /  2014-4-14 17:41  /  949 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

除了基本上的增删该查,长度,在内存的处理上还有其他的区别吗?希望可以详细点,谢谢!

2 个回复

倒序浏览
本帖最后由 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(线程不安全)更实用。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
String类型的字符串里面的内容不能修改,如需要修改,编译器会新创建一个字符串对象,有时在编程中并不希望这样,希望能改变字符串对象里的内容,就需要用StringBuffer类,即字符串缓冲区类。
  StringBuffer对象与String对象最大的不同在于StringBuffer不仅能修改字会串的长度,还能修改里面的内容,此外,在多线程编程中,StringBuffer对象较为安全

  StringBuffer类提供了很多对字符串的修改操作,如append() 追加操作.

   append(value);
    //参数value可以是任意基本数据类型以及Object的实例,表示插入的内容。

  1. StringBuffer sb = new StringBuffer();  //sb内容为空
  2.     sb.append(true); //追加布尔数据
  3.     sb.append(1.23); //追加双精度数据
  4.   sb.append('A');  //追加字符串数据
  5.     sb.append("append"); //追加字符串

  6.     //最后得到的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都是整数,分别表示删除的子串在原字符串中的起始位置和结束位置(不包括结束位置的字符)

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马