package A_ShangGuiGu.String;

import org.junit.Test;

public class StringBuffer_StringBuilder {
/**
* String:不可变序列,底层使用char[]存储
* StringBuffer:可变的字符序列,线程安全的,效率低,底层使用char[]存储
* StringBuilder:可变的字符序列,线程不安全,效率高,底层使用char[]存储
*/
@Test
public void test1(){
StringBuffer sb1 = new StringBuffer();//相当于造了一个空的数组,容量为16位
System.out.println(sb1.length());//结果为0,因为数组中有0个元素,或者说没有元素,与长度无关,与元素个数有关
StringBuffer sb2 = new StringBuffer("abc");//相当于造了一个19位的数组,字符个数加16一个19个空间
System.out.println(sb2.length());//结果为3

/*
字符串扩容问题:如果要添加的字符长度太长,底层数组放不下了,那就需要扩容底层的数组。
默认情况下扩容为原来容量的2倍+2,同时将原有数组中的元素复制进新的数组中。
*/
}

@Test
public void test2(){
/**
* append:顺序添加
* delete:删除,左闭右开
* replace:替换,左闭右开
* insert:添加在指定位置
* reverse:反转字符串
* indexof:返回指定字符在数组中首次出现的位置。
* substring:返回一个在父字符串数组中下标左闭右开的子字符串
* length:返回字符串数组的长度。
* charAt:提取字符串数组中指定位置的元素
* setcharAt:将指定位置的字符改成新的字符。
*/
StringBuffer sb1 = new StringBuffer("abcdefghijklmnopqrstuvwxyz");
sb1.append("00000");//
System.out.println(sb1);
sb1.delete(1,25);//从第[1]个元素开始,包括第[1]个元素,从第[25]个元素结束,但是不包括第[25]个元素
System.out.println(sb1);
sb1.replace(1,7,"aaa");
System.out.println(sb1);
sb1.insert(3,"111111");
System.out.println(sb1);
sb1.reverse();
System.out.println(sb1);
int i = sb1.indexOf("1");
System.out.println(i);
System.out.println(sb1.length());
char c = sb1.charAt(0);
System.out.println(c);
}
}

原文地址:http://www.cnblogs.com/zhazhawei906/p/16877271.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性