StringBuffer操作字符以及其常用的方法

本文详细介绍了Java中的StringBuffer类,包括其基本概念、如何通过append()和insert()方法添加字符、如何通过delete()方法删除字符、如何通过replace()方法替换字符等。此外,还通过实例演示了如何使用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。

为了便于对字符串的修改,JDK中提供了一个StringBuffer类(也称字符缓冲区)。

StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。


StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。

 

针对添加和删除字符的操作,StringBuffer类提供了些的方法,具体如下:

方法声明功能描述
StringBuffer append(char c)
添加参数到StringBuffer对象中
StringBuffer insert(int offset,String str)

将字符串中的offset位置插入字符串str

StringBuffer deleteCharAt(int index)
移除此序列指定位置的字符

StringBuffer delete(int start,int end)

删除StringBuffer对象中指定范围的字符或字符串序

StringBuffer replace(int start,intend,String s)

在StringBuffer对象中替换指定的字符或字符串序列

void setCharAt(int index,char ch)
修改指定位置index处的字符序列
String toString()
返回StringBuffer缓冲区中的字符串
StringBuffer reverse()
将此字符序列用其反转形式取代

涉及到StringBuffer类的很多方法,其中append()和insert()方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。

不同的是append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。

delete()方法用于删除指定位置的字符

setCharAt(0和replace()方法用于替换指定位置的字符

 

下边一个例子运用了StringBuffer类的一些常用方法:

public class Example {

	public static void main(String[] args) {
		
		System.out.println("-----------添加----------");
		add();
		System.out.println("-----------删除----------");
		remove();
		System.out.println("-----------修改----------");
		alter();
			
	}
	
	public static  void add(){
		//定义一个字符串缓冲区
		StringBuffer sb = new StringBuffer();
		sb.append("abcde"); //在末尾添加字符串
		System.out.println("append添加结果:"+sb);
		//在指定位置添加字符串 
		//从 0 开始下标为 2 的位置 插入 "123"
		sb.insert(2, "123");
		System.out.println("insert添加结果:"+sb);
	}
	
	public static  void remove(){
		
		StringBuffer sb = new StringBuffer("abcde");
		System.out.println("sb的初值:"+sb);
		
		//在指定范围内删除字符串
	    //从 0 开始下标为1到3 的范围内的字符删除,不包括下标为 3 处的字符 
		sb.delete(1, 3); 
		System.out.println("删除指定位置结果:"+sb);
		//在指定位置删除字符串 此时是针对最新 sb 结果操作
		sb.deleteCharAt(2);
		System.out.println("删除指定位置结果:"+sb);
		//清空缓冲区 利用字符缓冲区的长度
		sb.delete(0, sb.length());
		System.out.println("清空缓冲区结果:"+sb);
	}
	
	public static  void alter(){
		
		StringBuffer sb = new StringBuffer("abcde");
		System.out.println("sb的初值:"+sb);
		
		//修改指定位置字符
		sb.setCharAt(1, 'p');
		System.out.println("修改指定位置字符结果:"+sb);
		//替换指定位置范围内的字符或者字符串,不包括下标为 3 处的字符 
		sb.replace(1, 3, "qq");
		System.out.println("替换指定位置字符(串)结果:"+sb);
		
		System.out.println("字符串翻转结果:"+sb.reverse());
	}

}


运行结果:



从运行结果可以看出来,在使用delete()方法时候,当删除指定范围内的字符时,

比如原是字符串是“abcde” ,当使用delete(1,3)方法时候,字符串将从"abcde" 变成 "ade" 。

从下标0开始数的话 :

abcde
01234

delete(1,3)方法将删除下标为1、2处的字符,不包括下标为3 的字符。

同理,当使用replace()方法替换指定范围内的字符时候,比如原是字符串是“apcde” ,

当使用replace(1,3)方法时候,字符串将从"apcde" 变成 "aqqde" 。

即将 下标为 1、2、范围内的字符内容用 "qq" 替换了。

由此看出 replace( )方法也不会包括最后一位下标处字符。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值