前言:发觉本身的尺度愈来愈低,下限屡屡被刷新。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 "....";
} 对象
} 索引