A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Doit 中级黑马   /  2014-10-26 16:26  /  2119 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

substring(str.length()) 为什么没有越界?

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

3 个回复

倒序浏览
API有写.
  1. substring
  2. public String substring(int beginIndex)返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
  3. 示例:

  4. "unhappy".substring(2) returns "happy"
  5. "Harbison".substring(3) returns "bison"
  6. "emptiness".substring(9) returns "" (an empty string)   <---关注!!!

  7. 参数:
  8. beginIndex - 起始索引(包括)。
  9. 返回:
  10. 指定的子字符串。
  11. 抛出:
  12. IndexOutOfBoundsException - 如果 beginIndex 为负或大于此 String 对象的长度。
复制代码
回复 使用道具 举报
本帖最后由 英雄传说ER 于 2014-10-26 18:26 编辑

java里面参数大多是包含头不包含尾的,这句话意思是从str.length()开始,但是不包含str.length()比如 toString(4) 它的意思不是从4角标开始,而是说从第四个元素(3角标)开始,但是不包含第四个元素。

但是平时我们为了更好的推断它从哪里开始 ,可以理解为从4角标开始输出转换,这个只是帮助理解,而不是真正的操作方式

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
我也是是才发现。一般以索引为范围的都包含头不包含尾,我认为主要是为了便于比较和计算长度。比如  4-8,第一眼看上去长度为4,如果需要考虑尾部长度需要加1。反正以前学迭代器的时候看到过,长期不用就又忘记规律了。
还有一种参数就简单了,前一个为索引,后一个为长度。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马