码迷,mamicode.com
首页 > 其他好文 > 详细

StringBuffer类的delete()方法和deleteCharAt()方法的区别

时间:2019-07-31 09:17:32      阅读:1129      评论:0      收藏:0      [点我收藏+]

标签:index   out   art   类型   数组   方法   length   异常   uil   

引言

  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);

}
}
结果

技术图片

源码分析

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

技术图片

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

技术图片

首先判断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代表复制的长度

技术图片

  2.deleteCharAt(int index)源码分析

技术图片

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

技术图片

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

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

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


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

StringBuffer类的delete()方法和deleteCharAt()方法的区别

标签:index   out   art   类型   数组   方法   length   异常   uil   

原文地址:https://www.cnblogs.com/shicelaya/p/11273712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!