为什么发生ArrayIndexOutOfBoundsException,以及如何避免在Android?

为什么发生ArrayIndexOutOfBoundsException以及如何避免在Android?

当您尝试访问不存在的数组项时,会引发此exception:

 String [] myArray = new String[2]; myArray[2] = "something"; // Throws exception myArray[-1] = "something"; // Throws exception 

在访问数组项目之前,您应该检查索引是否为负数且不高于数组长度。

为什么发生ArrayIndexOutOfBoundsException […]

这是来自Java语言规范的引用:10.4数组访问 :

在运行时检查所有的数组访问; 尝试使用小于零或大于或等于数组长度的索引会导致引发ArrayIndexOutOfBoundsException。

[…]以及如何避免在Android?

你确定你的索引是在[0 … yourArray.length -1]的范围内。

(注意上面的-1,数组是0索引的,这意味着你可以在索引0处find第一个元素,最后一个长度为1)。

就像说的那样,它意味着你访问一个不存在的数组项。

大部分时间是因为有人要求数组的大小(长度),然后尝试读取array[length]的最后一个项目。 但是数组从0开始,所以你可以读取的最后一个是array[length-1]

溶剂当然不能存取不存在的物品

这个exception与Android无关,因为Android应用程序使用Java编程语言。 相反,你应该问how to avoid it in Java?

底线是你正试图访问数组中无效索引的值。

在这里阅读官方文档:

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html