下面的代碼是一個關於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]; }
本篇文章如有幫助到您,請給「翎野君」點個贊,感謝您的支持。