StringBuffer类
11.1.1 认识 StringBuffer 类
1.实例操作1——字符串连接操作(append)
【例11.1】通过append()方法连接各种类型的数据
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello ");
buf.append("world").append("!!!");
buf.append("\n");
buf.append("数字=").append(1).append("\n");
buf.append("字符=").append('c').append("\n");
buf.append("布尔=").append(true);
System.out.println(buf);
}
}
【例11.2】验证StringBuffer的内容是可以修改的
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello ");
fun(buf);
System.out.println(buf);
}
public static void fun(StringBuffer buf)
{
buf.append("world!!!");
}
}
2.实例操作2——在任意位置处为StringBuffer添加内容(insert)
【例11.3】在任意位置处为StringBuffer添加内容
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("[hello]");
buf.insert(0,"[world]");
System.out.println(buf);
buf.insert(buf.length(), "!!!!!!!!!!!");
System.out.println(buf);
}
}
3.实例操作3——字符串反转操作
在StringBuffer中专门提供了字符串反转的操作方法。字符串反转是指将一个是“Hello”的字符串转为“olleH”。
【例11.4】字符串反转操作
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("[hello]");
buf.insert(0,"[world]");
System.out.println(buf);
String str = buf.reverse().toString();
System.out.println(str);
}
}
4.实例操作4——替换指定范围的内容
【例11.5】替换指定范围的内容
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello world!");
buf.replace(6, 12, "name!!");
System.out.println(buf);
}
}
在String中如果要想进行替换,则使用的replaceAll()
方法,而在StringBuffer中使用的方法是replace()
方法,这一点读者在使用时需要注意。
5.实例操作5——字符串截取
通过substring()方法,可以直接从StringBuffer的指定范围中截取出内容。
【例11.6】截取指定范围的字符串内容
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello world!");
String str = buf.substring(6,12);
System.out.println(str);
}
}
6.实例操作6——删除指定范围的字符串
因为StringBuffer本身的内容是可更改的,所以也可以通过delete()方法删除指定范围的内容。
【例11.7】从StringBuffer中删除指定范围的字符串
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello world!");
String str = buf.delete(6,12).toString();
System.out.println(str);
}
}
7.实例操作7——查找指定的内容是否存在
通过indexOfO方法可以査找指定的内容,如果査找到了,则返回内容的位置:如果没有查找到,则返回-1。
【例11.8】查找指定的内容是否存在
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("hello world!");
if(buf.indexOf("hello") == -1)
{
System.out.println("不存在");
}
else
{
System.out.println("存在");
}
}
}
11.1.2 StringBuffer 类的应用
【例】使用String完成要求
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
String str = "{}{}{}";
for(int i = 0; i < 1000 ;i ++)
{
str+=i;
}
System.out.println(str);
}
}
当时曾经提过,以上的代码虽然最后字符串的结果改变了,但实际上是通过不断修改对象的引用来实现的,所以性能很差。也就是说,要想解决此类问题就必须靠StringBuffer,因为StringBuffer的内容是可以修改的,代码修改如下。
【例11.9】使用StringBuffer完成要求
package jiaqi;
public class demo310_1 {
public static void main(String[] args)
{
StringBuffer buf = new StringBuffer();
buf.append("{}{}{}");
for(int i = 0; i < 1000; i ++ )
{
buf.append(i);
}
System.out.println(buf);
}
}