关于StringIndexOutOfBoundsException&边界性判断
一、List的一个空指针问题
有很多小伙伴在开发时会犯的一个小问题,对list的边界性判断只进行了isEmpty或!=null其中一个判断
public class ListTest {
public static void main(String[] args) {
List list1 = null;
List list2 = new ArrayList();
System.out.println(list1.isEmpty());
System.out.println(list2.isEmpty());
}
}
以上代码这里会抛出空指针异常
public class ListTest {
public static void main(String[] args) {
List list1 = null;
List list2 = new ArrayList();
System.out.println(list1 == null);
System.out.println(list2.isEmpty());
}
}
以上代码这里会打印true,true。
再看一下源码:isEmpty()方法只是返回了List的size,当为空时将会空指针异常

总结得知在进行对list的边界性判断时,条件 != null要结合&& !isEmpty使用
二、substring索引越界问题

这里有个substring方法很常见的小问题,例如substring中的索引值为3时,当长度返回大于或等于3时,正常会输出截取后的值;
但是,例:当在索引为3的场景下,返回的字符串值小于3时,将会报出StringIndexOutOfBoundsException,索引越界了。
总结得知:在使用substring截取字符串方法时,要注意加判断条件大于等于截取长度时,才进行操作,否则进行其它操作…
substring()方法还有一点需要注意,看下substring()源码,在输入两个参数时,结束索引(endIndex)是不包括该数字长度的,例如:substring(0, 100); 最后截取的长度是100个size,注意是从0索引开始算,到99索引结束。

本文探讨了Java中边界检查的重要性,通过分析List的空指针异常问题和substring方法可能导致的索引越界异常,强调了在进行边界判断时,应确保条件为null和isEmpty的同时满足,以及在使用substring时要注意字符串长度和索引的关系,以防止异常的发生。
605

被折叠的 条评论
为什么被折叠?



