StringBuffer,and,StringBuilder
2016-08-23 17:39
120 查看
/* StringBuffer是字符串缓冲区。 是一个容器。 特点: 1.长度是可变化的。 2.可以对内容通过制定方法进行修改 3.容器对象一般都会具备对容器中的元素进行操作的功能。增删改查。 4.缓冲区可以存储不同类型的数据。 5.最终缓冲区存储完的数据都会通过toString方法变成字符串。 起一个临时存储的作用 C create U update R read D delete 1,存储。 StringBuffer append():将指定数据作为参数添加到已有数据结尾处。 StringBuffer insert(index,数据):可以将数据插入到指定index位置。 2,删除。 StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。 StringBuffer deleteCharAt(index):删除指定位置的字符。 3,获取。 char charAt(int index) int indexOf(String str) int lastIndexOf(String str) int length() String substring(int start, int end) 4,修改。 StringBuffer replace(start,end,string); void setCharAt(int index, char ch) ; 5,反转。 StringBuffer reverse(); 6, 将缓冲区中指定数据存储到指定字符数组中。 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 7,设置字符序列的长度。 setLength() JDK1.5 版本之后出现了StringBuilder. StringBuffer是线程同步。 StringBuilder是线程不同步。 以后开发,建议使用StringBuilder 升级三个因素: 1,提高效率。 2,简化书写。 3,提高安全性。 */
原理:
字符串缓冲区中维护了一个“可变长度的数组”
解释:其实就是超出内部数组长度后,新建数组长度是原数组的1.5,1.75,1.x等的倍数,并将原数组的数据复制到新数组中,并将新的元素也添加到新数组中
什么时候用字符串缓冲区呢?
数据很多,个数无法确定,类型无法确定,只要最后都转换成字符串
就是用StringBuffer这个容器。
使用的局限性:
1.必须最终转换成字符串
2.无法对存储进来的元素进行单独操作,因为存储进来的元素都变成字符串
class Demo
{
}
class StringBufferDemo
{
public static void main(String[] args)
{
//method_update();
StringBuilder sb = new StringBuilder("abcdef");
char[] chs = new char[6];
sb.getChars(1,4,chs,1);//将
for(int x=0; x<chs.length; x++)
{
sop("chs["+x+"]="+chs[x]+";");
}
draw(3,6);
draw(8,9);
// StringBuilder sb1 = new StringBuilder();
// sb1.append(new Demo()).append(new Demo());
// sop("sb1="+sb1);
}
public static void method_update()
{
StringBuffer sb = new StringBuffer("abcde");
// sb.replace(1,4,"java");
sb.setCharAt(2,'k');
sop(sb.toString());
}
public static void method_del()
{
StringBuffer sb = new StringBuffer("abcde");
// sb.delete(1,3);
//清空缓冲区。
//sb.delete(0,sb.length());
//sb.delete(2,3);
sb.deleteCharAt(2);
sop(sb.toString());
}
public static void method_add()
{
StringBuffer sb = new StringBuffer();
//sb.append("abc").append(true).append(34);
// StringBuffer sb1 = sb.append(34);
// sop("sb==sb1:"+(sb==sb1));
sb.insert(1,"qq");
sop(sb.toString());//abctrue34
//sop(sb1.toString());
}
public static void sop(String str)
{
System.out.println(str);
}
public static void draw(int row,int col)
{
StringBuilder sb = new StringBuilder();
for(int x=0; x<row; x++)
{
for(int y=0; y<col; y++)
{
sb.append("*");
}
sb.append("\r\n");
}
sop(sb.toString());
}
}
相关文章推荐
- String, StringBuffer, and StringBuilder
- String、StringBuffer、StringBuilder区别
- StringBuilder 与 StringBuffer 比较
- String、StringBuffer、StringBuilder
- java中String、StringBuffer、StringBuilder的区别
- JAVA关于Stirng,StringBuilder,StringBuffer的比较
- 正确使用String、StringBuffer、StringBuilder
- Java String之String和CharSequence、StringBuilder和StringBuffer的区别(1)
- String,StringBuffer,StringBuilder的区别。
- 从Java源码角度彻底理解String,StringBuilder和StringBuffer的区别
- String、StringBuffer与StringBuilder之间区别
- String, StringBuffer和StringBuilder
- String、StringBuffer、StringBuilder的区别
- 黑马程序员——常用API(StringBuilder和StringBuffer以及基本数据类型包装类)
- StringBuilder和StringBuffer解析(百度面试题优化须要用到的)
- String,StringBuffer与StringBuilder的区别
- String,StringBuffer, StringBuilder 的区别
- String,StringBuffer,StringBuilder的区别
- String,StringBuilder,StringBuffer的区别
- 面试题:String,StringBuffer,StringBuilder