1. 程式人生 > >String類和StringBuffer的比較

String類和StringBuffer的比較

String類代表字串類,字串是常量,它們的值在建立之後不能更改。如果你修改了String的值,就相當於建立了一個新的物件,為不可變類。

StringBuffer類指的是String的字串緩衝區,通過呼叫某些方法可以改變該序列的長度和內容,為可變類,所以說StringBuffer類物件是可修改修改物件。

String的特點:
1.為不可變物件,一旦被建立就不能修改它的值;

2.String類是final型別不可被繼承;

StringBuffer的特點:

1.它是一個可變的物件,當你需要修改其內容的時候,可以通過呼叫其方法進行修改。

2.不能通過賦值符號對他進行賦值.​​​​​​。

3.字串連線操作中StringBuffer的效率要比String高​​​​​​。

下面我來演示StringBuffer類的如何修改其內容的例子:

    String s = "abc";
	StringBuffer sb = new StringBuffer(s);//建立一個StringBuffer 物件,初始值為“abc”
	System.out.println(sb);
	sb.append("efg");//在末尾新增指定的字串
	System.out.println(sb);
	String str = sb.toString();//將字串緩衝物件轉換為字串物件
	System.out.println(str);//返回此序列中資料的字串表示形式。
	int i=20;
	sb.append(i);//新增整數
    sb.insert(2,i);//將整數i插入字串緩衝物件的索引2處
	System.out.println(sb);

字串如何轉換為字元或者字元陣列呢?

接下來我來介紹幾種簡單的字串String的轉換方法;

String str = new String("abcdef");
char m= str.charAt(3);//返回str字串中索引3處的字元值,輸出的結果為字元d
char [] b=new char[str.length];
//將字串str轉換為字元陣列
//方法1:
char [] a =str.toCharArray();//將字串str轉換為字元陣列
//方法2:
for(int i=0;i<str.length;i++){//將字串str轉換為字元陣列
b[i]=str.charAt[i];
}
char [] c={'a','b','c','d'};
//將字元陣列轉換為字串
方法1:
String s=String.copyValueOf(c);
方法2:
String s1=String.valueof(c);
//將字串中所有字元轉換為大寫
String s2=s1.toUpperCase();
//將字串中所有字元轉換為小寫
String s3=s2.toLowerCase();

執行緒是否安全?

String: String中的物件是不可變的,也就可以理解為常量,顯然執行緒安全。

StringBuffer:是執行緒安全的,因為對方法加了同步鎖或者對呼叫的方法加了同步鎖。

StringBudder:並沒有對方法進行加同步鎖,所以是非執行緒安全的。

什麼時候使用哪個型別比較好?

1.如果要操作少量的資料用: String 
2.單執行緒操作字串緩衝區 下操作大量資料 :StringBuilder 
3.多執行緒操作字串緩衝區 下操作大量資料 : StringBuffer