今天在项目中遇到了一个平时不注意的问题,测的时候发现的,
String value = ";,CANONICAL;,00000000000000000000000000000028;,CANONICAL;,0;,0;,YES;,NO;,YES;,YES;,;,;,;,;,";
String []arr = value.split(";,");
我本以为得到的arr数组长度是15;结果却是10,造成我读到数组越界,之后看了splic方法源码,才发现该方法返回会先判断数组的最后一位是否是“”,是的话剔除最后一个元素,继续检验,直到不为“”为止。
下边放上源码中判断删除的核心源码:
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--;
因为很多前辈都发了splic的源码,这里就不在写了,避免侵权。