substring单个参数构造方法源码解读记录_渣渣港的博客-程序员秘密

技术标签: jvm  java  源码  

首先先看一下本次解读substring的构造方法

public String substring(int beginIndex) {
    
// 传递进来的就是使用substring开始截取的索引值
        if (beginIndex < 0) {
    
// 进行判断如果传递进来的索引值小于等于0就索引越界异常
 			throw new StringIndexOutOfBoundsException(beginIndex);
        }
// 这里的value是调用substring的值其底层是一个数组,
// 获取到截取后的长度,判断如果小于0就抛出异常
        int subLen = value.length - beginIndex;
        if (subLen < 0) {
    
            throw new StringIndexOutOfBoundsException(subLen);
        }
// 注意:这里的this指的是调用者对象!,接着我们继续读new String(value,beginIndex,subLen)
        return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);
    }
public String(char value[], int offset, int count) {
    
/*
参数一:要截取的数组对象
参数二:开始截取的索引值
参数三要截取的个数
*/
        if (offset < 0) {
    
            throw new StringIndexOutOfBoundsException(offset);
        }
        if (count <= 0) {
    
            if (count < 0) {
    
                throw new StringIndexOutOfBoundsException(count);
            }
            if (offset <= value.length) {
    
// 注意:this.value="".value的意思是指初始化一个空的字符串,这是一个String对象
                this.value = "".value;
                return;
            }
        }

        if (offset > value.length - count) {
    
/*
上面已经介绍了三个参数的意思这里就很好理解了,如果总长度减去要
截取的长度小于开始截取的索引值那么就会索引越界
*/
            throw new StringIndexOutOfBoundsException(offset + count);
        }

/*
最后offset+count的意思就是为了寻找截取结束的索引值,结合substring的单参数构造方法来看
该单个参数的方法截取是包头包尾的
*/
        this.value = Arrays.copyOfRange(value, offset, offset+count);
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47733858/article/details/109444004

智能推荐

Hoeffding Inequalities (Hoeffding 不等式) 详解_wanger2014的博客-程序员秘密

Hoeffding Inequalities (Hoeffding 不等式)Definition: Let X1,⋯,XnX1,⋯,Xn\mathbf{X}_1, \cdots , \mathbf{X}_n be independent \textbf{bounded} random variables such that XiXi\mathbf{X}_i falls in the i...

Zero-Copy实现原理_aodaidi6752的博客-程序员秘密

参考文章Nio Is Real 'Zero-Copy'?:https://dongc.github.io/2015/12/09/717/ 参考文章:Linux I/O (二):A Process Of Reading Disk File:https://dongc.github.io/2016/07/14/1335/转载于:https://ww...

2021年字节跳动+京东+美团面试总结!论程序员成长的正确姿势_m0_53537576的博客-程序员秘密

“我,程序员,32岁,距离退休,只剩3年了!”这句话用来形容2020年互联网行业最适合不过了。从18年开始,大大小小的互联网公司开始了不止一轮的裁员,19年网上开始充斥一类文章,专门写互联网公司超过35岁的人,如果到这个年龄,还不是leader,业务又不核心,那么请焦虑吧。转过头,看手中的资源,基于基本盘看清自己的努力方向,非常感慨和受启发。中国互联网经过过去十多年野蛮式的发展似乎这2年开始慢下来了,程序员35岁的退休年龄虽然只是贩卖焦虑的一种说法,但是整个行业对人的要求越来越高是不争的事实,要求我们的

运维之道 | Zabbix 监控服务器TCP连接状态信息_VillianTsang的博客-程序员秘密

前言TCP的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB,或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击;time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想一、TCP状态介绍1、man netstat查看TCP的各种状态信息描述:LISTEN :...

C语言编程>第七周 ⑥ 给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。_朽木自雕i的博客-程序员秘密

例题:给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。例如,输入test,如果输入e,输出的结果不变,但如果输入a,结果testa。请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。代码如下:#include&lt;stdio.h&gt;#include&lt;string.h&gt;void fun(char*s,char ch){ while(*s&amp;&amp;*s!=ch) s++

2021年电工(初级)考试题库及电工(初级)最新解析_有用里3a684c_女王219的博客-程序员秘密

题库来源:安全生产模拟考试一点通公众号小程序电工(初级)考试题库是安全生产模拟考试一点通总题库中生成的一套电工(初级)最新解析,安全生产模拟考试一点通上电工(初级)作业手机同步练习。2021年电工(初级)考试题库及电工(初级)最新解析1、【单选题】我国的安全工作电压规定一般规定为()(C)A、12VB、24VC、36VD、50V2、【单选题】交流三相异步电动机Z=24,m=32,P=4,则每极每相的槽数为()。(B)A、8槽B、2槽C、4槽D、...

随便推点

UITextField被弹出键盘遮挡_表哥泡的面_pdm的博客-程序员秘密

本人定义了一个基本的ViewController——BaseViewController。.h文件内容如下:#import @interface BaseViewController :UIViewController{   UITextField *_checkText; //用来标识哪一个UITextField被点击  @property(nonatomic

Ubuntu-10.04中gvim启动警告:Gtk-WARNING **: Invalid input string_(gvim:5669): gtk-warning **_Louis_Hu的博客-程序员秘密

1、原因:    Ubuntu 10.04 Lucid Lynx默认安装将会把中文区域设置为zh_CN.utf8,而gvim能识别的中文区域设置为zh_CN.UTF-8。因此GVim会在启动时报错,且无法正常加载中文菜单。    使用locale查看:        [[email protected]:~]$ locale        LANG=zh_CN.utf8    

linux 查看是否做raid1,在linux下做RAID1试验_jiyulishang的博客-程序员秘密

RAID1试验---路亚南制作试验要求:两块磁盘做raid1破坏其中一个硬盘(做删除操作)恢复破坏的磁盘及数据 实现过程:1.准备linux,配置IP,链接putty2.查看系统信息[[email protected]~]# uname -aLinuxlocalhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 20...

大数据技术学习路线指南:大数据的内幕_报考指南大数据空着的事什么意思_金罗老师的博客-程序员秘密

这是在真正开始学习大数据之前对大数据的一个概览。为的是让我们成为大数据的主人。大数据运行机制这是对大数据运行机制的概览,如果你阅读过上一篇(OODA),就会感觉非常熟悉。不错,他们在概念上是如出一撤的!不过实际操作却又有巨大的不同。在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只...

JAVA swing JLabel JButton标签文本文字内容的换行_weixin_30455023的博客-程序员秘密

package hj.exam.fram;import javax.swing.*;public class test extends JFrame { private JButton button; private JLabel label; public test() { JPanel pane = new JPanel(); button = new JButton("&lt...

两款自动检测代码工具与插件,开源真香_程序猿DD_的博客-程序员秘密

大家好,我是TJ一个励志推荐10000款开源项目与工具的程序员写完代码最麻烦的是什么?就是运行时出现bug再回头去改去修,如果有一款检测工具,能自动检测出代码中是否存在bug是不是对开发者...