博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
StringBuffer操作字符以及其常用的方法
阅读量:2291 次
发布时间:2019-05-09

本文共 2499 字,大约阅读时间需要 8 分钟。

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

为了便于对字符串的修改,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开始数的话 :

a b c d e
0 1 2 3 4

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

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

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

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

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

你可能感兴趣的文章