9.6 StringBuffer类

 

9.6 StringBuffer类

  1. 参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著
  2. StringBuffer对象的创建,StringBuffer类的常用方法

 

  1. StringBuffer对象的创建

String类创建的字符串对象是不可以修改的,也就是说,String字符串不能修改,删除或替换字符串中的某个字符,即String对象一旦创建,实体是不可以再发生变化的。

例如:

String s=new String(“我喜欢学习”);

s  Ox12ABC----------我喜欢学习(实体)

注意:若变化,会另开空间,原来空间不变

 

StringBuffer类可以创建可修改的字符串序列。也就是说,该类对象的实体的内存空间可以自动改变大小,以便于存放一个可变的字符系列。

比如一个StringBuffer对象调用append方法可以追加字符序列

例如:

StringBuffer buffer=new StringBuffer(“我喜欢学习”);

那么对象s可调用append方法追加一个字符串序列,如下:

buffer.append(“数学”);

buffer   Ox12ABC----------------------我喜欢学习数学(实体发生了变化)      

注意:是在原来实体中发生变化

 

StringBuffer类有StringBuffer(),StringBuffer(int size),StringBuffer(String s)三个构造方法

  1. 使用第一个无参数的构造方法创建对象,分配给该对象的实体的初始容量可以容纳16个字符,当该对象的实体存放的字符序列的长度大于16时,实体的容量自动地增加

StringBuffer对象可以通过length()方法获取实体中存放字符串序列的长度,通过capacity()方法获取当前实体的实际容量

  1. 第二个初始容量为参数size,也是会自动增加
  2. 初始容量为参数字符串s的长度额外再加16个字符,也是会自动增加

 

比如一个无参数的构造方法例子:

package p1;

public class p1 {
    public static void main(String args[]) {
        StringBuffer str=new StringBuffer();
        str.append("大家好");
        System.out.println(str.length());               //输出3
        System.out.println(str.capacity());             //输出16
        str.append("我们大家都很愿意学习java语言");        //追加16,即19个字符
        System.out.println(str.length());                //输出19
        System.out.println(str.capacity());                 //输出34    34-16=18
    }
}

注意:我根据多次实验发现好像有个规律

初始容量:16

当字符串序列是17时候,实际容量16+18=34

当字符串序列是35时候,实际容量16+18+18*2=70

当字符串序列是71时候,实际容量16+18+18*2+18*4=142

当字符串序列是143时候,实际容量16+18+18*2+18*4+18*8=286

。。。

 

 

  1. StringBuffer类的常用方法

 

 

  1. append方法

使用StringBuffer类的append方法可以将其他java类型数据转化为字符串后,再追加到StringBuffer对象中。

  1. StringBuffer append(String s)

将一个字符串对象追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用

  1. StringBuffer append(int n)

将一个int型数据转化为字符串对象后再追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用

  1. StringBuffer append(Object o)

将一个Object对象的字符串表示追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用

  1. 类似还有很多StringBuffer append(类型 n)

 

 

  1. public  char  charAt()和public  void  setCharAt(int n,char ch)

char  charAt(int n)得到参数n指定的位置上的单个字符。当前对象实体中的字符串序列的第一个位置为0,第二个为1,以此类推。

n的值必须是非负的,并且小于当前对象实体中字符串序列的长度

setCharAt(int n,char ch)将当前StringBuffer对象实体中的字符串位置n处的字符用参数ch指定的字符替换。n的值必须是非负的,并且小于实体中字符串序列的长度

 

 

3>StringBuffer insert(int index,String str)

StringBuffer对象使用insert方法将参数str指定的字符串插入到参数index指定的位置,并返回当前对象的引用

 

 

4>public StringBuffer reverse()

StringBuffer对象使用reverse()方法将该对象实体中的字符翻转,并返回当前对象的引用

 

 

5>StringBuffer delete(int startIndex,int endIndex)

delete(int startIndex,int endIndex)从当前StringBuffer对象实体的字符串中删除一个子字符串,并返回当前对象的引用

快速记忆(要删除的第一个字符下标,endIndex-1)

deleteCharAt(int index)方法删除当前StringBuffer对象实体的字符串中index位置处的一个字符

 

 

  1. StringBuffer replace(int startIndex,int endIndex,String str)

将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换,并返回当前StringBuffer对象的引用

快速记忆(替换的第一个字符下标,endIndex-1, 要被换成的字符串)

 

 

附加:可以用String类的构造方法String(StringBuffer bufferstring)创建一个字符串对象

 

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/81296947
9.6