StringBuffer的使用

一、StringBuffer类

  • java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删。
  • StringBuffer是final类,实现了Serializable接口,可以保存到文件或网络传输
  • 继承了抽象类AbstractStringBuiler,属性char[] value存放字符序列
    在这里插入图片描述
public class StringBuffer01 {
	public static void main(String[] args) {
		//解读
		//1. StringBuffer 的直接父类是AbstractStringBuilder
		//2. StringBuffer 实现了Serializable, 即StringBuffer 的对象
		//	可以串行化
		//3. 在父类中AbstractStringBuilder 有属性char[] value,不是final
		// 该value 数组存放字符串内容,引出存放在堆中的
		//4. StringBuffer 是一个final 类,不能被继承
		//5. 因为StringBuffer 字符内容是存在char[] value, 所有在变化(增加/删除)
		// 不用每次都更换地址(即不是每次创建新对象), 所以效率高于String
		StringBuffer stringBuffer = new StringBuffer("hello");
		}
	}

二、String VS StringBuffer

  1. String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低 private final char value[];
    在这里插入图片描述
  2. StringBuffer 保存的是字符串变量,里面的值可以改,每次StringBuffer的更新实际上是更新内容,不用每次更改地址,效率较高 char value[];

三、String 和 StringBuffer 相互转化

public class StringAndStringBuffer {
	public static void main(String[] args) {
		//看String——>StringBuffer
		String str = "hello tom";
		//方式1 使用构造器
		//注意: 返回的才是StringBuffer 对象,对str 本身没有影响
		StringBuffer stringBuffer = new StringBuffer(str);
		//方式2 使用的是append 方法
		StringBuffer stringBuffer1 = new StringBuffer();
		stringBuffer1 = stringBuffer1.append(str);
		//看看StringBuffer ->String
		StringBuffer stringBuffer3 = new StringBuffer("java教育");
		//方式1 使用StringBuffer 提供的toString 方法
		String s = stringBuffer3.toString();
		//方式2: 使用构造器来搞定
		String s1 = new String(stringBuffer3);
	}
}

四、StringBuffer 类常见方法

public class StringBufferMethod {
	public static void main(String[] args) {
		StringBuffer s = new StringBuffer("hello");
		//增
		s.append(',');// "hello,"
		s.append("张三丰");//"hello,张三丰"
		s.append("赵敏").append(100).append(true).append(10.5);//"hello,张三丰赵敏100true10.5"
		System.out.println(s);//"hello,张三丰赵敏100true10.5"
		//删
		/*
		* 删除索引为>=start && <end 处的字符
		* 解读: 删除11~14 的字符[11, 14)
		*/
		s.delete(11, 14);
		System.out.println(s);//"hello,张三丰赵敏true10.5"
		//改
		//解读,使用周芷若替换索引9-11 的字符[9,11)
		public class StringBufferMethod {
		public static void main(String[] args) {
		StringBuffer s = new StringBuffer("hello");
		//增
		s.append(',');// "hello,"
		s.append("张三丰");//"hello,张三丰"
		s.append("赵敏").append(100).append(true).append(10.5);//"hello,张三丰赵敏100true10.5"
		System.out.println(s);//"hello,张三丰赵敏100true10.5"
		//删
		/*
		* 删除索引为>=start && <end 处的字符
		* 解读: 删除11~14 的字符[11, 14)
		*/
		s.delete(11, 14);
		System.out.println(s);//"hello,张三丰赵敏true10.5"
		//改
		//解读,使用周芷若替换索引9-11 的字符[9,11)
		//解读,在索引为9 的位置插入"赵敏",原来索引为9 的内容自动后移
		s.insert(9, "赵敏");
		System.out.println(s);//"hello,张三丰赵敏周芷若true10.5"
		//长度
		System.out.println(s.length());//22
		System.out.println(s);
	}
}

五、StringBuffer课后练习

输入商品名称和商品价格,要求打印效果示例,使用StringBuffer类的方法来完成:
商品 商品价格
手机 123,456 //比如 价格3,456,789.88
要求:价格的小数点前面每三位用逗号隔开,在输出。

import java.util.Scanner;
public class StringBufferExercise02 {
	public static void main(String[] args) {
		/*
		输入商品名称和商品价格,要求打印效果示例, 使用前面学习的方法完成:
		商品名商品价格
		手机123,564.59 //比如价格3,456,789.88
		要求:价格的小数点前面每三位用逗号隔开, 在输出。
		思路分析
		1. 定义一个Scanner 对象,接收用户输入的价格(String)
		2. 希望使用到StringBuffer 的insert ,需要将String 转成StringBuffer
		3. 然后使用相关方法进行字符串的处理
		代码实现
		*/
		//new Scanner(System.in)
		String price = "8123564.59";
		StringBuffer sb = new StringBuffer(price);
		//先完成一个最简单的实现123,564.59
		//找到小数点的索引,然后在该位置的前3 位,插入,即可
		// int i = sb.lastIndexOf(".");
		// sb = sb.insert(i - 3, ",");
		//上面的两步需要做一个循环处理,才是正确的
		手机123,564.59 //比如价格3,456,789.88
		要求:价格的小数点前面每三位用逗号隔开, 在输出。
		思路分析
		1. 定义一个Scanner 对象,接收用户输入的价格(String)
		2. 希望使用到StringBuffer 的insert ,需要将String 转成StringBuffer
		3. 然后使用相关方法进行字符串的处理
		代码实现
		*/
		//new Scanner(System.in)
		String price = "8123564.59";
		StringBuffer sb = new StringBuffer(price);
		//先完成一个最简单的实现123,564.59
		//找到小数点的索引,然后在该位置的前3 位,插入,即可
		// int i = sb.lastIndexOf(".");
		// sb = sb.insert(i - 3, ",");
		//上面的两步需要做一个循环处理,才是正确的
	}
}

注:这里讲的不够详细不清楚的码友们可以去哔哩哔哩搜看韩老师的讲解
【零基础 快速学Java】韩顺平 零基础30天学会Java

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值