看的别人的代码看不明白substring(,),他这里的+怎么理解。


public static int show1(String str, String key) {
    int count = 0;// 计数器
    int tmp = 0;// 记录截取后的新位置
    while ((tmp = str.indexOf(key)) != -1) {// 查找key(ss),找到的地址码给tmp
        sop("str:" + str);
        str = str.substring(tmp + key.length());// 截取
        // 地址码+key长度,截取后重组成新str,继续while
        // 截取指导索引位置的字符串
        // 子串第一次出现的位置+长度=下一次的起始位置
        count++;
    }
    return count;
}

+就是两个整数相加的意思

System.out.println("当前tmp:"+tmp+" ,key.length():"+key.length());

img

加号就是两个数相加的意思。
至于参数会不会导致越界,答案是不会的。
可以看substring的代码,参数最大可以传整个字符串的长度,而tmp是能找到key后的下标(开头的下标),最极端的,也就是加上key的长度后刚好等于字符串整个的长度。(反过来想,如果会超过的话,key就不可能匹配到了)

str = str.substring(tmp + key.length());
+的作用是2个整数相加,改变截取字符串的开始位置。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632