为了账号安全,请及时绑定邮箱和手机立即绑定

Java系列: java中split的下角标越界

标签:
Java

有的时候总觉得split很好用,屡试不爽,但他偶尔也会给你一点小惊喜。

String ids = "1,2,3,";
// 对,你没有看错,我故意这么写的,根据我们的设想这里一定是四个值拼接的,即时有空字符串,使用split神器也可以成功分割出长度为4的数组。

// 所以我这么写了。
String[] idArr = ids.split(",");
String idA = idArr[0];
String idB = idArr[1];
String idC = idArr[2];
String idD = idArr[3];

// 好的...你突然发现挂了,抛出数组下标越界了。

// 新手,或者不常用split的人总是会认为idArr的长度应该是4,实际上他只有3。是的这就是java中的split,因为你在别的地方用过的split不是这样的,比如javascript中的split,如果是这个例子的话,那么毫无疑问他的长度是4,最后一个为""空字符串。

// 实际上java的split有一个重载方法,是两个参数的,ok第二个参数就是你期望数组的长度,当然如果你写100,那么你也不可能得到长度为100的数组在本例当中,他是个limit的概念。
String[] idArr = ids.split(",",4); // 这有写长度是4
String[] idArr = ids.split(",",100); // 这有写长度也是4
String[] idArr = ids.split(",",3); // 这有写长度是3
String[] idArr = ids.split(",",2); // 这有写长度是2

// ok看到这里大家应该明白了,所以java的split默认是根据指定的字符去截取,然后末尾如果都是空字符串,那么全部舍去,除非你限定长度。
// 而javascript确实默认没有去处理空字符串的问题。
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
171
获赞与收藏
888

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消