StringBuffer类

1.StringBuffer的构造方法
StringBuffer()
创建一个StringBuffer对象,分配给该对象的缓冲区的大小可以容纳16个字符。
在这里插入图片描述
StringBuffer(int capacity)
创建一个StringBuffer对象,并接收一个整数参数,用于设置缓冲区的大小。
在这里插入图片描述
例如:
StringBuffer s=new StringBuffer(“hello”);
在这里插入图片描述
2.length()和capacity()方法
对于每一个StringBuffer对象来说,有两个很重要的属性,分别是长度和容量。通过调用length()方法可以得到当前StringBuffer对象的长度(字符的个数),而通过调用capacity()方法得到StringBuffer对象总的分配容量。它们的一般形式如下:
public int length()和public int capacity()

 public class Stringbuffer{
    public static void main(String[] args){
    StringBuffer s1=new StringBuffer();
    System.out.println(s1.length());    //0
    System.out.println(s1.capacity());   //16
    StringBuffer s2=new StringBuffer(10);
    System.out.println(s2.length());    //0
    System.out.println(s2.capacity());  //10
    StringBuffer s3=new StringBuffer("hello");
    System.out.println(s3.length());   //5
    System.out.println(s3.capacity());   //21
    }
}

3.append()方法
可以向已经存在的StringBuffer对象追加任何类型的数据,StringBuffer类提供了相应append()方法,如下所示:

StringBuffer append(boolean b)
StringBuffer append(char c)
StringBuffer append(char[] str)
StringBuffer append(char[] str,int offset,int length)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long lng)
StringBuffer append(Object obj)
StringBuffer append(String str)
StringBuffer append(StringBuffer sb)

注意:append方法都是向缓冲区 “追加”元素,这个“元素”参数可以是各种数据类型,这些数据先转化为字符串,再追加到StringBuffer对象中。如果添加的字符超出了缓冲区的大小,那么 缓冲区将自动扩充,总容量(等于旧容量*2+2)。

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("hello");
System.out.println(s1.length());   //5
System.out.println(s1.capacity());  //21
s1.append("abcdefgh");
System.out.println(s1.length());   //13
System.out.println(s1.capacity());  //21
s1.append("123456789");
System.out.println(s1.length());   //22
System.out.println(s1.capacity());  //44
}
}

public class Stringbuffer{
public static void main(String[] args){
String question=new String("1+1=");
int answer=3;
boolean result=(1+1==3);    //false
StringBuffer sb=new StringBuffer();
sb.append(question);
sb.append(answer);
sb.append('\t');
sb.append(result);
System.out.println(sb);      //1+1=3 false
}
}

4.ensureCapacity()和setLength()方法
ensureCapacity方法的一般形式如下:
public void ensureCapacity(int minimumCapacity):用于设置StringBuffer对象的缓冲区大小,同时满足StringBuffer对象的容量至少等于参数minimumCapacity 。如果当前对象容量大于参数minimumCapacity,则对象的新容量等于旧容量大小;如果当前对象容量小于参数minimumCapacity,则对象的新容量为:miniCapacity参数与(旧容量×2+2)两者中较大者。

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer();
System.out.println(s1.capacity());    //  旧容量:16
s1.ensureCapacity(8);         //minimumCapacity=8;  当前容量(16)>8
System.out.println(s1.capacity());    // 新容量:16
StringBuffer s2=new StringBuffer();
s2.ensureCapacity(24);      // minimumCapacity=24;  当前容量(16)<24,
System.out.println(s2.capacity());   //新容量取minimumCapacity=24
                                                   //与旧容量*2+2(34)两者中较大者等于34.
StringBuffer s3=new StringBuffer();
s3.ensureCapacity(100);
System.out.println(s3.capacity());  //新容量:100
}
}

setLength()方法
public void setLength(int newLength)
设置的字符串的长度,参数newLength代表字符串新的长度。当newLength>当前长度时,足够的空字符(‘\ u0000’)被追加使长度等于newLength。当newLength<当前长度时,在新长度之后存储的字符将丢失。

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("123456789");
s1.setLength(5);
System.out.println(s1);//”12345”
}
}
5.**insert()方法**

它是先调用String类的valueOf方法得到相应的字符串表达式。随后这个字符串被插入所调用的StringBuffer对象中。insert方法有如下几种形式:

StringBuffer insert(int offset,boo1ean b)    
StringBuffer insert(int offset,char c)
StringBuffer insert(int offset,char[]str)
StringBuffer insert(int index,char[]str,int offset,int len)
StringBuffer insert(int offset,double d)
StringBuffer insert(int offset,float f)
StringBuffer insert(int offset,int i)
StringBuffer insert(int offset,long l)
StringBuffer insert(int offset,Object obj) 
StringBuffer insert(int offset,String str)
public class Stringbuffer{

public static void main(String[] args){
StringBuffer s1=new StringBuffer(“123456789”);
s1.insert(2,“abc”); //从索引位置为2的地方插入字符串
System.out.println(s1); //12abc3456789
}
}
6.**reverse()方法:**将StringBuffer对象内的字符串进行翻转,并返回当前对象。

public StringBuffer reverse()
public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
s1.reverse();
System.out.println(s1);      //”cba”
}
}

7.public char charAt(int index)方法和public void setCharAt(int index,char ch)
charAt(int index)方法返回参数index索引位置上的字符。其中index的取值范围:0----s.length()-1 。
setCharAt(int index,char ch)方法,将当前StringBuffer对象中索引等于参数index的位置上字符,用参数ch进行替换。
index的取值范围:0----s.length()-1

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
char c=s1.charAt(1);   
System.out.println(c);   //’b’
s1.setCharAt(1,'m');
System.out.println(s1);   //”amc”
}
}

8.public StringBuffer deleteCharAt(int index) 和public StringBuffer delete(int startIndex,int endIndex)
deleteCharAt(int index)方法:删除当前StringBuffer对象字符串中index索引位置上的字符,并返回当前对象。
delete(int startIndex,int endIndex)方法:从当前StringBuffer对象字符串中删除一个子字符串,并返回当前对象。其中,startIndex表示开始位置,endIndex表示结束位置,删除的字符中不含结束位置上的字符。

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("abc");
System.out.println(s1.deleteCharAt(1));   //"ac"
StringBuffer s2=new StringBuffer("123abc");
System.out.println(s2.delete(1,5));         //"1c"
}
}

9.public StringBuffer replace(int startIndex,int endIndex,String str)方法:
将当前StringBuffer对象字符串的一个子串用参数str替换,并返回当前对象。
被替换的子串由下标startIndex和endIndex指定。这样startIndex到endIndex-1的字符串被str替换。

public class Stringbuffer{
public static void main(String[] args){
StringBuffer s1=new StringBuffer("We all like java");
System.out.println(s1.length());    //16
int startIndex=s1.indexOf("java"); 
s1.replace(startIndex,s1.length(),"apple");  
System.out.println(s1);    // “We all like apple”
System.out.println(s1.length());    //17
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值