关于字符串的问题(>_<)h

img


各位师兄师姐,小生有一问题困扰片刻,请问substring(5,7)这里输出了“编程”这两个字符,按理看从0开始数,5到6就可以输出编程二字了,为什么还要再加一呢。这10个字符之间有空格,我试着把空格填空了,再按照5到7来输出,结果还是编程二字,并没有把编程后面的(空格填空为随机字符)字符输出。我把7改为8,结果就输出了编程与其后面的字符(空格)
这是什么原理呢
(图片中文档//里的内容是按照教材讲解写上去的,发现写上去了还是不理解其中的原理(>_<)~

看String这个substring方法的解释,它的截取方式是含左不含右,也就是数学中的[n,m)这种说法,也就是截取的时候能取到beginIndex上的字符,但不会取到endIndex上的字符

img


再看他的代码:

img


比如你说的beginIndex=5,endIndex=7那么算出来的subLen=7-5=2,也就是说要从原字符串的字符数组中value中获取从beginIndex开始的2个字符,也就是index=5和index=6这两个字符

可曾听闻左包右不包[5,7)

substring(a,b)是左闭右开的,( 5 ,7 )也就是 5跟6 ,不包括7

看一下subString方法的注释:
截取的是:从输入的开始位置(5)至输入的结束位置(7-1)的内容

img


如有帮助,请采纳!谢谢