11.1 StringBuffer类(血干JAVA系列)

StringBuffer类

11.1.1 认识 StringBuffer 类


1.实例操作1------字符串连接操作(append)

【例11.1】通过append()方法连接各种类型的数据

java 复制代码
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的内容是可以修改的

java 复制代码
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添加内容

java 复制代码
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】字符串反转操作

java 复制代码
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】替换指定范围的内容

java 复制代码
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】截取指定范围的字符串内容

java 复制代码
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中删除指定范围的字符串

java 复制代码
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】查找指定的内容是否存在

java 复制代码
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完成要求

java 复制代码
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完成要求

java 复制代码
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);
	}
}
相关推荐
caimouse6 分钟前
Reactos 第1章 概述
c语言·开发语言·架构
星间都市山脉9 分钟前
Android STS(Security Test Suite)完整介绍与测试流程
android·java·linux·windows·ubuntu·android studio·androidx
.千余15 分钟前
【C++】C++继承入门(下):友元、静态成员与菱形继承的底层逻辑
开发语言·c++·笔记·学习·其他
财经资讯数据_灵砚智能17 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月10日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
namexingyun22 分钟前
拆解Fable 5三重安全护栏:模型路由、蒸馏防护与生物安全分类器的技术原理 - 微元算力(weytoken)
java·人工智能·python·安全·架构·ai编程
小短腿的代码世界24 分钟前
行情快照与增量更新引擎:Qt在高频交易数据分发中的核心架构——你的行情推送为什么延迟了500ms?
开发语言·qt·架构
初中就开始混世的大魔王29 分钟前
6 Fast DDS-传输层
开发语言·c++·中间件·信息与通信
地铁潜行者32 分钟前
加了幂等表,为什么消息重试反而不执行了?聊聊 MQ 消费幂等的边界
java·后端
chenment33 分钟前
别再为每个模型单独写一套队列了:用 200 行代码封装多模态统一调用层
人工智能·python·产品
啊森要自信1 小时前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython