StringBuffer的示例
2015-08-13 14:04
309 查看
1、StringBuffer与String的关系 A、是两个不同的类,String实例一旦创建完毕,就不能再修改起内容。而StringBuffer实例则可修改实例所包含的字符序 列。 B、两者间的转换: *从一个StringBuffer实例可以通过类String的构造方法构造出一个具有相同字符序列的String实例。 格式如下:new String(StringBuffer实例的引用); 另外还可以通过StringBuffer的成员方法来完成相同的转化。 例如:public String toString(); 设b为StringBuffer类型的变量,则:String s=String(b);与String s=b.toString();具有相同效果,均会生成与b所指向的StrngBuffer实例内容相同的String实例,并将其指向String变量s。 *反过来,从String实例也可以构造出相应的具有相同字符序列的StringBuffer实例。其方法是通过StringBuffer的构造方法: public StringBuffer(String str) 例如:StringBuffer b=new StringBuffer("abcd"); 2、修改StringBuffer实例内容 A、通过StringBuffer的成员方法 public int length() 获得StringBuffer实例的字符串长度。 B、通过StringBuffer的成员方法:public char charAt(int index)得到字符序列中指定下标的字符。 C、通过StringBuffer的成员方法:public void setCharAt(int index,char ch)可以将StringBuffer实例的字符序列中指定下标的字符设置为指定的字符。 例如:StringBuffer b=new StringBuffer("that"); b.setCharAt(0,'c');//将b所指向的StringBuffer势力的字符序列从that变为char D、几种常用的修改StringBuffer实例的成员方法 *append:在字符串序列之后添加新的内容 例如:StringBuffer b=new StringBuffer(“Pretty”); b.append("good!");//b的字符序列变为Pretty good! *delete:删除字符串序列中指定的子序列 例如:StringBuffer b=new StringBuffer(“Those”) b.delete(2,4);//删除字符序列Those中的下标为2和3(4-1)的字符 *insert:在指定的位置给字符序列插入新的内容 例如:StringBuffer b=new StringBuffer(“1+=2”); b.insert(2,1);//在“1+=2”的下标为2的字符之前插入整数1 *replace:替换指定的下标字符,声明方法为:public StringBuffer replace(int start,int end,String str) 例如:StringBuffer b=new StringBuffer(“25*??=625”); b.replace(3,5,"25");//将指定的子串(从下标为start到下标为(end-1)的子串)替换成心子串 *reverse:将StringBuffer实例的字符序列变成其倒序的字符序列,声明方法为:public StringBuffer reverse() 例如:StringBuffer b=new StringBuffer(“Pretty”); b.reverse();//将b所指向的StringBuffer实例的内容从Pretty变为ytterP 3、StringBuffer实例的容量:StringBuffer实例所占用的内存大小称为StringBuffer实例的容量。可以通过StringBuffer的成员方法public int capacity()获得其实例的容量。 A、StringBuffer具有三种构造方法,这三种构造方法生成的StringBuffer实例的容量大小如下表:
构造方法 | 字符序列长度 | 内存容量 |
public StringBuffer() | 0 | 16 |
Public StringBuffer(int length) | 0 | Length |
public StringBuffer(String str) | Str中的字符长度 | Str中的字符序列长度加16 |
在开发程序的时候,经常使用StringBuffer来进行字符串的拼接。如果在循环中来反复的做字符串拼接时,会清空Stringbuffer中的内容,然后再拼接新的字符串信息。
例如:
StringBuffer sb = new StringBuffer("");
for (UserInfo ui : userInfoList) {
sb = new StringBuffer("");
sb.append("姓名:");
sb.append(ui.getName());
sb.append(" ");
sb.append("年龄:");
sb.append(ui.getAge());
System.out.println(sb.toString());
}
在循环中使用sb = new StringBuffer("");来清空sb中的信息。
StringBuffer提供了以下连个方法:
1、delete(int start, int end)
移除此序列的子字符串中的字符
2、setLength(int newLength)
设置字符序列的长度。
测试程序:
private static void testStringBufferclear() {
StringBuffer sbf = new StringBuffer("wwwwww");
StringBuffer sbi = new StringBuffer("wwwwww");
long s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbi.setLength(0); sbi.setLength(0);
}
long s11 = System.currentTimeMillis();
System.out.println("StringBuffer-setLength:" + (s11 - s1));
s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbf.delete(0, sbf.length());
}
s11 = System.currentTimeMillis();
System.out.println("StringBuffer--delete:" + (s11 - s1));
s1 = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
sbf = new StringBuffer("");
}
s11 = System.currentTimeMillis();
System.out.println("StringBuffer--new StringBuffer:" + (s11 - s1));
}
结果:
StringBuffer-setLength:63
StringBuffer--delete:109
StringBuffer--new StringBuffer:78
结论:
要通过使用sbi.setLength(0);来清空StringBuffer对象中的内容效率最高。
相关文章推荐
- 解析jquery获取父窗口的元素
- ios8新特性widget开发(自定义的通知栏样式)
- HTML 相对路径表示方法
- javascript数组与字符串方法
- AngularJS 学习(-)Hello world
- node 利用crypto进行hash加密和URLSafeBase64处理 (node.js邮箱验证)
- jquery关于select框的取值和赋值
- Jquery中animate可以操作css样式属性总结
- jQuery简要dom操作
- [前端] 音频/视频播放控制
- 百度使用的网页变灰css
- js中各种距离clientWidth
- jQuery的mouseover和mouseout事件当快速移动 事件延迟触发问题
- BootstrapQ 包Bootstrap tree,dialog等待
- Jquery 多选下拉列表插件jquery multiselect
- jQuery实现展开伸缩效果
- 将PDF转成HTML网页格式的方法
- 区别js里面常用的random,ceil,round,floor
- Project facet jst.web.jstl has not been defined.
- javascript书籍