前言:發覺本身的尺度愈來愈低,下限屢屢被刷新。StringBuilder類中大量的方法,總給人一種看一眼API就能學會使用的感受,這種狀況下,實在懶得一字一句地敲Demo,直接把別人的Demo拿來主義。哈哈~ 安全
不過說回來,仍是要作一下分類。 app
StringBuilder的方法大致可分爲增刪改差。(append或insert,delete,replace,indexOf)其中,append和insert似有很多功能重疊之處,底層實現之間卻又沒有相互調用,真是叫人費解。 ide
StringBuilder和StringBuffer的方法使用如出一轍,區別只在StringBuilder線程不安全而StringBuffer線程安全,僅此而已。 ui
public class StringBuilderDemo { 線程
/**
* 字符串String爲不可改變的字符序列
* 一、常量池 (共享)
* 二、字符串不可改變, + 拼接,不是追加
* +產生大量的垃圾對象
* StringBuilder/StringBuffer -->append(boolean b)
* String StringBuilder StringBuffer 三者區別
* 一、String 不可改變
* StringBuilder、StringBuffer 可改變
* 二、StringBuilder:線程不安全
* String:線程安全
* StringBuffer:線程安全
* 三、String 重寫了equals 比較內容相同
* StringBuilder、StringBuffer 沒有重寫,比較地址
*
*
* /**
* StringBuilder /StringBuffer方法
* 一、append(boolean b) 追加
* 二、charAt(int index) 指定位置|索引的字符
* 三、delete(int start, int end) 刪除[s,e)的子字符串
deleteCharAt(int index) 刪除指定位置的字符
四、indexOf(String str) 第一次出現的 位置
indexOf(String str, int fromIndex)
lastIndexOf(String str) 最後一次出現的位置
lastIndexOf(String str, int fromIndex)
五、insert(int offset, Object obj) 插入字符串
* 六、length()
* 七、replace(int start, int end, String str) 替換字符串
* 八、//reverse() 反轉
* 九、setCharAt(int index, char ch) 替換單個字符
* 十、substring(int start) 獲取子串
* substring(int start, int end)
* 十一、toString() 對象轉成字符串
*
*
*
*
*/
public static void main(String[] args) {
StringBuilder sb1 =new StringBuilder("abc");
StringBuilder sb2 =new StringBuilder("abc");
//沒有重寫equals
System.out.println(sb1.equals(sb2));
}
public static void test1(){
//StringBuilder(String str)
StringBuilder sb =new StringBuilder("abc");
//獲取Runtime
Runtime rn =Runtime.getRuntime(); //單例
System.out.println("空閒內存-->"+rn.freeMemory());
System.out.println("最大內存-->"+rn.maxMemory() );
System.out.println("整體內存-->"+rn.totalMemory() );
for(int i=0;i<10000;i++){
sb.append(i);
}
System.out.println("=========================");
System.out.println("空閒內存-->"+rn.freeMemory());
System.out.println("最大內存-->"+rn.maxMemory() );
System.out.println("整體內存-->"+rn.totalMemory() );
System.out.println(sb);
}
public static void stringDemo(){
StringBuilderDemo demo =new StringBuilderDemo();
System.out.println(demo.toString());
//toString
String msg ="abc";
System.out.println(msg.toString());
System.out.println(msg);
//獲取Runtime
Runtime rn =Runtime.getRuntime(); //單例
System.out.println("空閒內存-->"+rn.freeMemory());
System.out.println("最大內存-->"+rn.maxMemory() );
System.out.println("整體內存-->"+rn.totalMemory() );
for(int i=0;i<10000;i++){
msg +=i;
}
System.out.println("=========================");
System.out.println("空閒內存-->"+rn.freeMemory());
System.out.println("最大內存-->"+rn.maxMemory() );
System.out.println("整體內存-->"+rn.totalMemory() );
}
@Override
public String toString() {
return "....";
} 對象
} 索引