Java的學習02

今天依舊記錄一下今天的學習的知識。安全

 1 /**
 2  * 測試StringBuilder StringBuffer,可變字符序列  3  * String對象稱爲「不可變對象"指的是對象內部成員變量的值沒法再改變  4  * @author 小白  5  *  6  */
 7 
 8 public class TestBuilder {  9         public static void main(String[] args) { 10             
11             //StringBuilder線程不安全,效率高(通常使用它);StringBuffer線程安全,效率低
12             StringBuilder sb = new StringBuilder("abcdefg"); 13             
14  System.out.println(Integer.toHexString(sb.hashCode())); 15  System.out.println(sb); 16             
17             sb.setCharAt(2, 'M'); 18  System.out.println(Integer.toHexString(sb.hashCode())); 19  System.out.println(sb); 20  } 21 }

 

 1 /**
 2  * 測試StringBuilder StringBuffer可變字符序列的經常使用方法  3  * @author 小白  4  *  5  */
 6 public class TestStringBuilder3 {  7     public static void main(String[] args) {  8         StringBuilder sb = new StringBuilder();  9         
10         for(int i=0;i<26;i++){ 11             char temp = (char)('a'+i); 12  sb.append(temp); 13  } 14         
15  System.out.println(sb); 16         sb.reverse();//倒序
17  System.out.println(sb); 18         sb.setCharAt(3, '高');//替換字符
19  System.out.println(sb); 20         sb.insert(0, '我').insert(6, '大');//鏈式調用,核心就是:該方法調用了return this,把本身返回了。
21  System.out.println(sb); 22         sb.delete(10, 20); 23  System.out.println(sb); 24 } 25 }
 1 /**
 2  * 測試可變字符序列和不可變字符序列使用的陷阱  3  * @author 小白  4  *  5  */
 6 public class TestStringBuilder4 {  7     public static void main(String[] args) {  8         
 9         /*使用String進行字符串的拼接*/
10         String str8 = ""; 11         //本質上使用StringBuilder拼接,可是每次循環都會生成一個StringBuilder對象
12         long num1 = Runtime.getRuntime().freeMemory();//獲取系統剩餘內存空間
13         long time1 = System.currentTimeMillis();//獲取系統的當前時間
14         for(int i=0;i<5000;i++){ 15             str8 = str8 + i;//至關於產生了10000個對象
16  } 17         long num3 = Runtime.getRuntime().freeMemory(); 18         long time2 = System.currentTimeMillis(); 19         System.out.println("String佔用內存:" + (num1 - num3)); 20         System.out.println("String佔用時間:" + (time2 - time1)); 21         
22         //之後因該使用StringBuilder的append()的方法進行字符串的拼接,切記切記
23         /*使用StringBuilder進行字符串的拼接*/
24         StringBuilder sb1 = new StringBuilder(""); 25         long num4 = Runtime.getRuntime().freeMemory(); 26         long time3 = System.currentTimeMillis(); 27         for(int i=0;i<5000;i++){ 28  sb1.append(i); 29  } 30         long num5 = Runtime.getRuntime().freeMemory(); 31         long time4 = System.currentTimeMillis(); 32         System.out.println("StringBuilder佔用內存" + (num5 - num4)); 33         System.out.println("StringBuilder佔用時間" + (time4 - time3)); 34         
35  } 36 
37 }

相關文章
相關標籤/搜索