Java學習總結:31(StringBuffer類)

StringBuffer類

在Java中String類不適合使用於頻繁修改字符串的操作上(因爲其字符串常量一旦聲明則不可改變,只能改變字符串對象,改變的是其內存地址的指向),所以我們可以使用StringBuffer類方便用戶進行內容的修改。
例:觀察StringBuffer類的使用

package Project.Study.StringBufferClass;

public class Test1 {
    public static void main(String []args){
    //String類可以直接賦值,但是StringBuffer類不行
        StringBuffer buf=new StringBuffer();	//實例化StringBuffer類對象
        buf.append("Hello ").append("World").append("!!!");	//append()方法和String類的“+”作用類似
        change(buf);							//引用傳遞
        System.out.println(buf);
    }
    public static void change(StringBuffer temp){//接收StringBuffer引用
        temp.append("\n").append("Hi").append("!!!");//修改內容
    }
}
//結果:
//Hello World!!!
//Hi!!!

兩個類的定義結構
我們可以發現String類和StringBuffer類都是CharSequence接口的子類,也就是說這兩個類的對象都可以利用自動向上轉型的操作爲CharSequence接口實例化。

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        CharSequence seq="Hello World!!!";
        //將String類的實例化對象向上轉型爲CharSequence接口對象
        System.out.println(seq);	//String類覆寫的toString()
    }
}
//結果:
//Hello World!!!

需要注意的是,雖然String和StringBuffer類都屬於CharSequence接口的子類,但是這兩個類對象是不能直接轉換的。

一:將String類轉換爲StringBuffer類對象

1.利用StringBuffer類的構造方法(public StringBuffer(String str))

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer("Hello World!!!");
        //利用該構造方法可以將傳遞進來的String類對象實例化爲StringBuffer類對象
        System.out.println(buf);
    }
}
//結果:
//Hello World!!!

2.利用StringBuffer類的append()方法(public StringBuffer append(String str))

例:

package Project.Study.StringBufferClass;

public class Test2 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer();
        buf.append("Hello World!!!");		//String變爲StringBuffer
        System.out.println(buf);
    }
}
//結果:
//Hello World!!!

二.將String Buffer類變爲String

1.利用toString()方法可以將StringBuffer轉換爲String

例:

package Project.Study.StringBufferClass;

public class Test3 {
    public static void main(String []args){
        StringBuffer buf=new StringBuffer("Hello World!!!");    //String變爲StringBuffer
        String str=buf.toString();                              //任何類都具備toString()方法
        System.out.println(str);
    }
}
//結果:
//Hello World!!!

事實上所以的類中都會繼承Object類的toString()方法,所以所有的類對象都可以轉換爲String類對象。

2.利用String類的構造方法(public String(StringBuffer buffer))實現StringBuffer與String的轉換

例:

package Project.Study.StringBufferClass;

public class Test4 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World!!!");	//String變爲StringBuffer
        String str=new String(buf);			//String類構造,開闢新內存
        System.out.println(str);
    }
}
//結果:
//Hello World!!!

三.由於String與StringBuffer都表示字符串,所以在String類裏面也提供了一個和StringBuffer比較的方法:public boolean contentEquals(StringBuffer sb)

package Project.Study.StringBufferClass;

public class Test5 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello");
        System.out.println("Hello".contentEquals(buf));
    }
}
//結果:
//true

注意:此方法比較時會區分大小寫

StringBuffer類常用的操作方法

No. 方法 類型 描述
1 public StringBuffer append(數據類型變量) 普通 數據追加操作
2 public StringBuffer reverse() 普通 字符串反轉操作
3 public StringBuffer insert(int offset,數據類型變量) 普通 在指定位置追加內容
4 public StringBuffer delete(int start,int end) 普通 刪除指定索引範圍的內容

例:字符串反轉操作

package Project.Study.StringBufferClass;

public class Test6 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World");
        System.out.println(buf.reverse());					//使用reverse()方法反轉字符串
    }
}
//結果:
//dlroW olleH

例:在指定索引位置增加數據

package Project.Study.StringBufferClass;

public class Test7 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello");
        //首先在最前面加上字符串,然後在指定位置再追加字符串
        buf.insert(0,"Now!").insert(9," World");
        System.out.println(buf);
    }
}
//結果:
//Now!Hello World

例:刪除部分數據

package Project.Study.StringBufferClass;

public class Test8 {
    public static void main(String[]args){
        StringBuffer buf=new StringBuffer("Hello World!!!");
        System.out.println(buf.delete(5,11));
    }
}
//結果:
//Hello!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章