引言

  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()方法的区别的更多相关文章

  1. laravel中delete()方法和destroy()方法的区别

    delete()方法是实例方法,需要查询到相应的数据并通过模型实例调用 destroy()方法可以直接调用,通过索引删除记录 举个栗子: /*delete()方法删除*/ //先查找记录 $blog ...

  2. Java.io.File中的delete()方法和deleteOnExit()方法的区别

    1.delete()方法:             当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行: 2.deleteOnExit()方法:            当 ...

  3. Scanner类的next()方法和nextLine()方法的区别(简)

    1.  空白符:回车.空格.tab等 2.  next()方法读取到空白符就结束 3. nextLine()方法读取到回车结束,也就是 "\r"

  4. Thread类的interrupted方法和isInterrupted方法的区别

    如下所示,interrupted()会改变线程的中断状态(清除),而isInterrupted()不影响线程的中断状态   /** * Tests whether the current thread ...

  5. ThinkPHP的D方法和M方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  6. M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  7. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  8. 问题:ExecuteNonQuery 与 ExecuteScalar 结果: ExecuteNonQuery方法和ExecuteScalar方法的区别

    ExecuteNonQuery方法和ExecuteScalar方法的区别 ----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进 ...

  9. 2016/05/23 thinkphp M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

随机推荐

  1. 03 我的第一个html页面

    <!--定义文档的类型,一个html就是一个文档--> <!DOCTYPE html> <html lang="en"> <!--head ...

  2. Fabric1.4源码解析:客户端创建通道过程

    在使用Fabric创建通道的时候,通常我们执行一条命令完成,这篇文章就解析一下执行这条命令后Fabric源码中执行的流程. peer channel create -o orderer.example ...

  3. 【Webkit Blog翻译】深入研究WebRTC | 内有福利

    本文译自 A Closer Look Into WebRTC” 我们在最近的一篇 WebKit博客中宣布了对High Sierra平台和iOS中Safari的WebRTC支持.现在,我们希望能够带领大 ...

  4. spring 5.x 系列第8篇 —— 整合Redis客户端 Jedis和Redisson (代码配置方式)

    文章目录 一.说明 1.1 Redis 客户端说明 1.2 Redis可视化软件 1.3 项目结构说明 1.3 依赖说明 二.spring 整合 jedis 2.1 新建基本配置文件和其映射类 2.2 ...

  5. Java学习笔记——Linux下安装配置tomcat

    朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用ta ...

  6. 在CentOS 7上安装Python3

    源码包安装 Python官方没有对Linux打包, 需要下载源码包进行编译. 可以自己下载最新版本的Python, 在Python下载页面, 点击Python3.x.x版本对应的Download, 在 ...

  7. 分享SQL,查询用户最近一次购买时间间隔

    (1)先创建一张测试表: CREATE TABLE `用户购买订单` ( `购买时间` datetime(6) NULL DEFAULT NULL, `用户` varchar(20) CHARACTE ...

  8. 从零开始一起学习SALM-ICP原理及应用

    点"计算机视觉life"关注,星标更快接收干货! ## 小白:师兄,最近忙什么呢,都见不到你人影,我们的课也好久没更新了呢 师兄:抱歉,抱歉,最近忙于俗事.我后面一起补上,学习劲头 ...

  9. 安装Win10,ERROR_0x8007025D问题解决

    Windows10安装的时候,出现ERROR CODE:0x8007025D 大概提示为:windows 无法安装所需的文件.请确保安装所需的所有文件可用,并重新启动安装. 本人在出现这个问题的原因, ...

  10. 走近Java之幕后的String

    前几天,有个同事问了我一个表面看起来显而易见的问题,是关于String的,我们一起来看一下(如果有说的不正确的地方,欢迎大家指正). java中,字面量在编译期计算,并且String字面量作为常量,存 ...