Java常用类库----StringBuffer

认识StringBuffer----java.lang.StringBuffer

  StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的。

  对于StringBuffer而言,本身是一个具体的操作类,所以不能像String那样采用直接赋值的方式进行对象的实例化,必须通过构造方法完成。

 

实例操作一:字符串连接操作(append)

  在StringBuffer中提供了一系列的append()方法,下面观察其使用(一定要注意的是,这些方法最终都会返回StringBuffer类的实例化对象)

public class StringBufferDemo01{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ") ;                    // 向StringBuffer中添加内容
        buf.append("World").append("!!!") ;        // 可以连续调用append()方法
        buf.append("\n") ;                        // 添加一个转义字符
        buf.append("数字 = ").append(1).append("\n") ;    // 添加数字
        buf.append("字符 = ").append('C').append("\n");     // 添加字符
        buf.append("布尔 = ").append(true) ;    // 添加布尔值
        System.out.println(buf) ;            // 直接输出对象,调用toString()
    }
};
View Code

  继续验证StringBuffer的内容是可以修改的。通过引用传递的方式完成。

public class StringBufferDemo02{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ") ;        
        fun(buf) ;        // 传递StringBuffer内容 
        System.out.println(buf) ;    // 打印内容
    }
    public static void fun(StringBuffer s){        // 接收StringBuffer引用
        s.append("MLDN ").append("LiXingHua") ;    // 修改StringBuffer的内容
    }
};
View Code

 

实例操作二:在任意位置处为StringBuffer添加内容

  可以直接使用insert()方法添加内容:

public class StringBufferDemo03{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("World!!") ;        // 添加内容
        buf.insert(0,"Hello ") ;        // 在第一个内容之前添加内容
        System.out.println(buf) ;
        buf.insert(buf.length(),"MLDN~") ;    // 在最后添加内容
        System.out.println(buf) ;
    }
};
View Code

  在StringBuffer中与String类非常类似的是,都可以使用length()方法求出字符串的长度

 

实例操作三:字符串反转操作

  直接使用reverse()方法就可以完成反转的功能:public StringBuffer reverse()

public class Test{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("World!!") ;        // 添加内容
        buf.insert(0,"Hello ") ;        // 在第一个内容之前添加内容
        String str = buf.reverse().toString() ;    // 将内容反转后变为String类型
        System.out.println(str) ;        // 将内容输出
    }
};
View Code

注:String没有reverse()方法

 

实例操作四:替换指定范围的内容

  在StringBuffer类中也存在replace()方法(String有replace()方法),使用此方法就可以对指定范围的内容进行替换:

    public StringBuffer replace(int start,int end,String str)

public class StringBufferDemo05{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        System.out.println("内容替换之后的结果:" + buf) ;    // 输出内容
    }
};
View Code

 

实例操作五:字符串截取

  通过substring()方法直接从StringBuffer中指定范围截取内容(String有substring()方法)

    public String substring(int start,int end)

public class StringBufferDemo06{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        String str = buf.substring(6,15) ;    // 截取指定范围的内容
        System.out.println("内容替换之后的结果:" + str) ;    // 输出内容
    }
};
View Code

 

实例操作六:字符串删除

  因为StringBuffer的内容是可以修改的,所以也可以通过delete()方法删除指定范围的内容。

public class StringBufferDemo07{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        buf.replace(6,11,"LiXingHua") ;        // 将world的内容替换
        String str = buf.delete(6,15).toString() ;    // 删除指定范围中的内容
        System.out.println("删除之后的结果:" + str) ;    // 输出内容
    }
};
View Code

 

实例操作七:查找指定的内容是否存在

  在String类中可以使用indexOf()方法进行查找,而在StringBuffer中也可以继续使用此方法,此方法如果找到了内容则返回位置,否则返回-1

public class StringBufferDemo08{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;    // 声明StringBuffer对象 
        buf.append("Hello ").append("World!!") ;        // 向StringBuffer添加内容
        if(buf.indexOf("Hello")==-1){
            System.out.println("没有查找到指定的内容") ;
        }else{    // 不为01表示查找到内容
            System.out.println("可以查找到指定的内容") ;
        }
    }
};
View Code

 

StringBuffer类的应用

观察一下的代码

public class StringBufferDemo09{
    public static void main(String args[]){
        String str1 = "LiXingHua" ;
        for(int i=0;i<100;i++){
            str1 += i ;        // 不断修改String的内存引用,性能低
        }
        System.out.println(str1) ;
    }
};
View Code

  以上的操作代码因为要频繁修改字符串的内容,所以使用String根本不合理,最好的做法是使用StringBuffer

public class StringBufferDemo10{
    public static void main(String args[]){
        StringBuffer buf = new StringBuffer() ;
        buf.append("LiXingHua") ;
        for(int i=0;i<100;i++){
            buf.append(i);        // StringBuffer可以修改,性能高
        }
        System.out.println(buf) ;
    }
};
View Code

 

总结:

  凡是需要频繁修改字符串内容的时候,都要使用StringBuffer类完成,而且在StringBuffer类中也提供一些方法是String类中所没有的,包括:delete(),insert()等等,这些方法需要的时候直接通过DOC文档进行查找。

posted @ 2015-03-26 10:50  闲来垂钓  阅读(165)  评论(0)    收藏  举报