String類和StringBuffer的比較
阿新 • • 發佈:2018-11-25
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