StringBuffer类
StringBuffer类和String一样,也用来代表字符串。只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。但是,对StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。另外由于StringBuffer是线程安全的,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。
StringBuffer构造方法
StringBuffer s = new StringBuffer(); //这样初始化出的StringBuffer对象是一个空的对象。
StringBuffer s = new StringBuffer(“abc”); //这样初始化出的StringBuffer对象的内容就是字符串”abc”。
需注意,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:
StringBuffer s = "abc"; //赋值类型不匹配
StringBuffer s = (StringBuffer)"abc"; //不存在继承关系,无法进行强转
StringBuffer对象和String对象之间的互转的代码如下:
String s = "abc";
StringBuffer s2sb = new StringBuffer(s); //String转换为StringBuffer
StringBuffer sb = new StringBuffer("123");
String sb2s = sb.toString(); //StringBuffer转换为String
StringBuffer常用方法
1)增
StringBuffer append(data);尾部添加
StringBuffer sb = new StringBuffer("abc");
sb.append(true); //则对象sb的值将变成”abctrue”。
StringBuffer insert(index,data);指定位置插入
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false); //对象sb的值是”TestfalseString”
2) 删
StringBuffer delete(int start, int end) 该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
StringBuffer sb = new StringBuffer("TestString");
sb. delete (1,4); //对象sb的值是”TString
StringBuffer deleteCharAt(int index):删除指定位置的元素
StringBuffer sb = new StringBuffer("Test");
sb. deleteCharAt(1); //对象sb的值变为”Tst”
3) 改
StringBuffer reverse()将StringBuffer对象中的内容反转,然后形成新的字符串
StringBuffer sb = new StringBuffer("abc");
sb.reverse(); //经过反转以后,对象sb中的内容将变为”cba”
StringBuffer replace(start,end,string);
StringBuffer sb = new StringBuffer("abcdefg");
sb.replace(1,4,"@@"); //经过替换以后,对象sb中的内容将变为”a@@efg”
setCharAt(int index, char ch);修改对象中索引值为index位置的字符为新的字符ch
StringBuffer sb = new StringBuffer("abc");
sb.setCharAt(1,’D’); // 则对象sb的值将变成”aDc”
4) 查
char charAt(index i);取出下标为i的字符
StringBuffer sb = new StringBuffer("abc");
System.out.println(sb.charAt(1)) //结果为b
int indexOf(string);方法返回该字符串指定的子串中第一次出现处的索引。如果没有找到一个子串,则返回-1。
StringBuffer buff = new StringBuffer("programming language");
System.out.println("Index of substring = " + buff.indexOf("age")); // 17
System.out.println("Index of substring = " + buff.indexOf("k")); // -1