疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java笔记StringBuffer类常用方法


 

   

  先来两个面试题:

  1.String,StringBuffer,StringBuilder的区别:

  a.StringBuffer和StringBuilder的区别:

  StringBuffer是jdk1.0版本的,是线程安全的,效率低

  StringBuilder是jdk1.5版本的,是线程不安全的,效率高

  b.String和StringBuffer,StringBuilder的区别

  String是不可变的字符序列

  StringBuffer和StringBuilder是可变的字符序列

  2.String和StringBuffer分别作为参数传递问题

  我们知道基本数据类型是值传递,不会改变其值,引用数据类型是是址传递,会改变其值。

  但是String类虽然是引用数据类型,当作参数传递时,不会改变其值,因为方法里面对String值改变的操作,都是再创建以string对象,并且该对象随着方法的结束而变成垃圾。

  String对象的特点,一旦被初始化,就不能被改变

  StringBuffer则与String不一样,同其他引用数据类型一样,做参数传递时,同样传入的是地址值,但是方法中发生改变返回的是本身,方法弹栈后,改变的值仍然有效。

  StringBuffer的添加功能:

  1.public StringBuffer append(String str):可以把任意数据类型添加到字符串缓冲区里面,并返回字符串缓冲区本身

  注意:StringBuffer是字符串缓冲区,当new的时候是在堆内存创建了一个对象,底层是一个长度为16的字符数组,当调用添加的方法时,不会再重新创建对象,而是不断向原缓冲区添加字符

  StringBuffer类中重写了toString方法,显示的是对象中的属性值

  2.public StringBuffer insert(int offsert, String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符缓冲区本身

  注意:如果没有指定位置的索引就会报StringIndexOutOfBoundsException异常。

  StringBuffer的删除功能:

  1.public StringBuffer deleteCharAt(int index) 删除指定位置的字符,并返回字符缓冲区本身

  注意:当缓冲区中这个索引上没有元素的时候就会报StringIndexOutOfBoundsException异常

  2.public StringBuffer delete(int start,int end) 删除从指定位置开始到指定位置结束的内容,返回字符缓冲区本身

  若清空缓冲区可写为delete(0,sb.length())

  StringBuffer的替换功能:

  1.public StringBuffer replace(int start,int end,String str) 从start开始到end结束用str替换

  2.StringBuffer的反转功能 public StringBuffer reverse() 将字符串反转

  StringBuffer的截取功能:

  1.pubic string subString(int start) 从指定位置开始截取到末尾

  2.public string subString(int start, int end) 截取从指定位置开始到指定位置结束

  注意:返回值的类型是String,不再是StringBuffer本身。返回的是一个新的字符串,原StringBuffer本身不变。

  StringBuffer与String的转换:

  1.String——> StringBuffer

  a.通过构造方法

  b.通过append方法

  2.StringBuffer——>String

  a.通过构造方法

  b.通过toString方法

  c.通过subString(0,str.length)