一個關於List的IndexOutOfBoundsException異常記錄


下面的代碼是一個關於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];
}

 

本篇文章如有幫助到您,請給「翎野君」點個贊,感謝您的支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM