StringBuffer

StringBuffer字符串缓冲区

它是是一个容器,
用于对数据的改变,包括存储、删除、获取、修改

特点:
1、长度是可以变的
2、可以直接操作多个数据类型
3、最终可以通过toString()方法变成字符串


什么时候用StringBuffer
数据类型及个数不确定,而且最终要变成字符串时



1、存储
StringBuffer append():数据添加到结尾
StringBuffer insert(index,数据):数据添加至index位置

 

2、删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end
StringBuffer deleteCharAt(int):删除缓冲区中指定位置的字符

 

3、获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end) //返回的是String


4、修改
StringBuffer replace(int start, int end, String str) :指定起始位置,替换成指定内容,含头不含尾
void setCharAt(int index, char ch) //替换某一位置的字符

 

5、反转
StringBuffer reverse()

 

6、将StringBuffer中指定的数据存储到字符数组中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

 

  

StringBuffer只是一个容器,任何数据的增删改查,都是基于容器。

class StringBufferDemo
{
    public static void main(String[] args)
    {
        StringBuffer sb=new StringBuffer();  //创建一个空的StringBuffer
        StringBuffer sb1=sb.append(111);
        
        System.out.println("sb==sb1:"+(sb==sb1));  //true。sb和sb1是同一对象,这就是容器的意义
        System.out.println(sb);            //111
        System.out.println(sb1);        //111

    }
}

 

 

class StringBufferDemo
{
    public static void main(String[] args)
    {    
        method_add();
        method_del();
        method_update();
        method_rev();
        method_getChars();
    }

    public static void method_add()            //StringBuffer存储操作
    {
        StringBuffer sb=new StringBuffer();    //创建一个空的容器
        
        sb.append(34);                        //append,末尾加整数34
        sop(sb.toString());                    //输出:34。 toString(),转成字符串。

        sb.append(true).append("====");        //方法调用链
        sop(sb.toString());                    //输出:34true====

        sb.insert(2,"***");                    //insert,第2角标位处,加***
        sop(sb.toString());                    //输出:34***true====
    }



    public static void method_del()            //StringBuffer删除操作
    {
        StringBuffer sb=new StringBuffer("abcde");    

        sb.delete(1,3);            //删除第1、第2角标的字符
        sop(sb.toString());        //输出:ade
        
        //sb.delete(0,sb.length());        //清空缓冲区
        //sb.delete(1,2);            //删除单个
        sb.deleteCharAt(1);            //删除单个
        sop(sb.toString());        //输出:ae
    }

    public static void method_update()        //StringBuffer修改操作
    {
        StringBuffer sb=new StringBuffer("abcde");    
        //sb.replace(1,4,"===");                //输出:a===e。含头不含尾
        sb.setCharAt(1,'G');                    //输出:aGcde。角标1的字符替换成G。
        sop(sb.toString());                
    }
    
    public static void method_rev()            //StringBuffer反转操作
    {
        StringBuffer sb=new StringBuffer("abcde");    
        sb.reverse();                            //输出:edcba
        sop(sb.toString());    
    }

    public static void method_getChars()        //StringBuffer getChars操作
    {
        StringBuffer sb=new StringBuffer("abcdefg");
        
        char[]  chs=new char[6];            

        sb.getChars(1,4,chs,1);                    //将abcdefg中的下标1、2、3位,放到数组chs中,从下标1开始放
        
        for (int x=0;x<chs.length ;x++ )
        {
            sop("chs["+x+"]="+chs[x]);        

        }
        /*
        输出:
        chs[0]=
        chs[1]=b
        chs[2]=c
        chs[3]=d
        chs[4]=
        chs[5]=
        */
    }


    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

 

posted @ 2017-03-18 22:42  自学开发的老司机  阅读(842)  评论(0编辑  收藏  举报