下面的代码是一个关于List的经典问题,平常工作中,我们对空指针会比较警惕,稍不留意可能就会写出来下面的问题代码。
List<Integer> list = new ArrayList<>(); Integer a = list.get(0);
上面的代码运行之后会报下面的数组越界的异常
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 main at java.util.ArrayList.rangeCheck(ArrayList.java:653) at java.util.ArrayList.get(ArrayList.java:429) at com.lingyejun.dating.chap11.thread.MyDemo3.main(MyDemo3.java:17)
根本原因在于new ArrayList<>()的时候创建出来的是一个不包含任何内容的空数组,此时的数组size是0,然后list.get(0)操作时,index>=size,所以就出现了数组越界的异常,在这里小记一下。
拷贝了一部分的源码如下:
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } public E get(int index) { rangeCheck(index); return elementData(index); } private void rangeCheck(int index) { if (index >= size) throw new IndexOutOfBoundsException(outOfBoundsMsg(index)); } E elementData(int index) { return (E) elementData[index]; }
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。