引言 StringBuffer類的delete()方法和deleteCharAt()方法都是用來刪除StringBuffer字元串中的字元 區別 1.對於delete(int start,int end)這個方法一共有兩個參數是int類型的,代表從索引下標start刪除字元到索引下標end字元,但是 ...
引言
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--,字元使用的長度減一
結語
由於這是我第一篇博客,可能會出現許多問題,歡迎大家在下方評論,提出寶貴的意見