java deletecharat_StringBuffer类的delete()方法和deleteCharAt()方法的区别

引言

StringBuffer类的delete()方法和deleteCharAt()方法都是用来删除StringBuffer字符串中的字符

区别

1.对于delete(int start,int end)这个方法一共有两个参数是int类型的,代表从索引下标start删除字符到索引下标end字符,但是不包括end

2.对于StringBuffer中的deleteCharAt(int index)方法:只有一个参数,使用时删除索引为index的字符

代码及结果如下图所示

package StringTest;

/**

* @auther cela

* @date 2019/7/31 9:58

*/

public class StringBufferTest {

public static void main(String[] args){

StringBuffer sb = new StringBuffer("012345");

// 删除索引1-2的字符,但是不包括2

StringBuffer delete = sb.delete(1, 2);

System.out.println(delete);

StringBuffer stringBuffer = new StringBuffer("012345");

// 删除索引为4的字符

StringBuffer deleteCharAt = sb.deleteCharAt(4);

System.out.println(deleteCharAt);

}

}

结果

b0b7f72be52bf3506958361f049405d7.png

源码分析

1.delete(int start,int end)源码分析

559258d51b6ef225c57bf94a61e151b3.png

StringBuffer类中delete(int start, int end)这个方法是调用其父类AbstractStringBuilder中的delete(int start, int end)方法,代码如下

1b8a5cc82956a75e8446e29d2e62fced.png

首先判断start是否小于0,小于0抛出异常。再判断end是否大于StringBuffer中字符使用了的长度,是那么end就等于count。再判断end是否大于start,是抛出异常。len是StringBuffer中删除字符的长度

最后调用System.arraycopy(value, start+len, value, start, count-end)这个方法复制字符数组,value代表原数组,srcPos代表复制的起始位置,value代表目标数组,start代表目标数组起始位置,

length代表复制的长度

75e74cc9b1921650f213784303bd3863.png

2.deleteCharAt(int index)源码分析

e168e9eccd2f19d2bfad02c6acc88f48.png

StringBuffer类中delete(int start, int end)这个方法是调用其父类AbstractStringBuilder中的deleteCharAt(int index)方法,代码如下

f6bcb3dcf47cbc127d46d008481fd242.png

首先判断index是否小于0或者大于count,条件成立抛出异常

然后使用System.arraycopy(value, index+1, value, index, count-index-1);这个方法复制字符数组

最后count--,字符使用的长度减一

结语

由于这是我第一篇博客,可能会出现许多问题,欢迎大家在下方评论,提出宝贵的意见

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值