Java中string和stringBuffer的区别

来源:互联网 发布:央视市场研究 知乎 编辑:程序博客网 时间:2024/06/06 17:20

引言:

    最近软考在看J2SE视频,在讲常用类的时候有提到string和stringbuffer的区别,之前看过一遍没什么印象,又一遍的印象还比较深刻,能够大概理解讲的是什么。


区别:

   他们两个就类似于“常量”和“变量”;

  

  String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值;对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去;String 是final类,即不能被继承。

 

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

    sb.append("hello");


StringBuffer类的常用方法:

   

 1、append方法

    public StringBuffer append(boolean b)
    该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,
 例如:
     StringBuffer sb = new StringBuffer(“abc”);
     sb.append(true);
  则对象sb的值将变成”abctrue”。

2、deleteCharAt方法

    public StringBuffer deleteCharAt(int index)
  该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。

 例如:
    StringBuffer sb = new StringBuffer(“Test”);
     sb. deleteCharAt(1);
 该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。

还存在一个功能类似的delete方法:
public StringBuffer delete(int start,int end)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。

例如:
 StringBuffer sb = new StringBuffer(“TestString”);
 sb. delete (1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。

3、insert方法

   public StringBuffer insert(int offset, String s)
   该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。

例如:
   StringBuffer sb = new StringBuffer(“TestString”);
   sb.insert(4,“false”);
该示例代码的作用是在对象sb的索引值4的位置插入字符串false,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。

4、reverse方法

 public StringBuffer reverse()
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。

例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。

5、setCharAt方法

public void setCharAt(int index, char ch)
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。

例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。

6、trimToSize方法

public void trimToSize()
该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

7、构造方法:

StringBuffer s0=new StringBuffer();分配了长16字节的字符缓冲区
StringBuffer s1=new StringBuffer(512);分配了512字节的字符缓冲区

8、获取字符串的长度: length()

  StringBuffer s = new StringBuffer("www");
  int i=s.length();
  m.返回字符串的一部分值
  substring(int start) //返回从start下标开始以后的字符串
  substring(int start,int end) //返回从start到 end-1字符串

9.替换字符串

  replace(int start,int end,String str)
  s.replace(0,1,"qqq");

10.转换为不变字符串:toString()。

总结:

学习之后不总结跟没学习差不多,第一遍学完之后就是那样,现在总结一样,感觉收获挺多的,这就是老师所说的“颗粒归仓”吧。


  





0 0
原创粉丝点击