黑马说要考string的,这个string怎么考嫩??不知道,今天随便写一段
一个String对象的长度是固定的,你不能过分改变它的内容,比如,增加长度到过长,或者是附加新的字符至String对象中。
您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String实例。
如果程序对这种附加字符串的需求很频繁,那你就更不能这样做了,算算你产生了多少string吧。
对象的生成需要内存空间与时间,不断地产生String实例是一个没有效率的行为,讲究高效的java肯定不会只有一个string来抵挡这样的问题,
我们最好是能重复运用一个对象,StringBuilder 和Stringbuffer 应运而生。
stringBuilder很不错的,完全可以替代string,最主要的是它的效率高
//必须先实例化一个
stringBuilder sBuilder = new stringBuilder();
//StringBuilder它可以自由拼接易于阅读。
例如,执行SQL语句:
sBuilder.Append("select * from tb1");
sBuilder.Append("where id=1");
因为是自由拼接,所以上面同等于:
strng sBuilder = "select * from tb1 where id=1";
StringBuilder 受到欢迎,还因为它能在string 字符串,数组,之间来回转换游刃有余。
比如传智的经典例题:
package it.cast.java.util;
/*
使用StringBuilder或者StringBuffer;
将字符串“ABCDE”;
转变为“A,B,C,D”;
这是一个黑马的入学考试题,
*/
public class StringBuilder2{
public static void main(String[] args)
{
//先把那个abcde写入到StringBuilder里面
StringBuilder s=new StringBuilder("ABCDE");
//删除掉那个多余的字符e
s.deleteCharAt(4);
/*将删除后的Stringbuilder类型 转换为string类型,
我们当时为什么转换为Stringbuilder 类型,就是他接收方便,
向String类型转换的时候方便。
这里,将stringbuilder类型,转换为string类型,在数组排序。
新建一个数组s1
*/
char[] s1=s.toString().toCharArray();
//再建一个stringbuilder 类型,用来接收排序好的数组,向Stringbuilder类型的转换
StringBuilder ss=new StringBuilder();
for(char c:s1){
ss.append(c).append(",");
}
//因为每一个字符后面都有一个逗号,而按题目要求,最后一个逗号是不能要的。
ss.deleteCharAt(ss.length()-1);
System.out.println(ss);
//直接输出ss,就行了。
}
}
J2SE 5.0提供java.lang.StringBuilder类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的字符超出可容纳的长度,则StringBuilder对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用StringBuilder会让程序的效率大大提高。
|