引言
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--,字符使用的长度减一
结语 由于这是我第一篇博客,可能会出现许多问题,欢迎大家在下方评论,提出宝贵的意见
原文地址:https://www.cnblogs.com/shicelaya/p/11273712.html
时间: 2024-10-14 04:07:49