举个例子:
String str = ""; //一个空字符串 String[] arr = str.split(","); //比如要用逗号分割,这个用什么分割结果都一样 System.out.println(arr[0]); //可以获取到第一个元素,是一个空字符串"" System.out.println(arr.length); //长度为1
大家可以自己试一下
这样就导致空字符串的时候得到的长度为1,比如字符串是"gjhj625"的时候的长度也为1,这样在做一些逻辑判断的时候就可能会出错。我今天在写动态mapper的时候就被这个搞了一点时间
如果我们想判断分割的结果大于0时是一个具体的字符串而不是一个空字符串,这个时候我们就要做一些处理
方法一直接在分割之前就判断字符串是否为空,
String str = ""; if (str.isEmpty()) { arr = new String[]{}; ... } else { arr = str.split(","); ... }方法二
删除空字符串,再获取长度
String str = ""; String[] arr = str.split(","); //最好在代码需要用到List的时候才用这种 List结尾list = Arrays.asList(arr); list = new ArrayList<>(list); list.remove("");
如果有看懂split源码的大佬,知道为什么会这样,请指点一下我,嘿嘿嘿
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)