本文概述
每当我们尝试以数组中不存在的索引访问数组的任何项时, 都会发生ArrayIndexOutOfBoundsException。换句话说, 索引可以是负数或超过数组的大小。
ArrayIndexOutOfBoundsException是IndexOutOfBoundsException的子类, 它实现Serializable接口。
ArrayIndexOutOfBoundsException的示例
public class ArrayIndexOutOfBoundException {
public static void main(String[] args) {
String[] arr = {"Rohit", "Shikar", "Virat", "Dhoni"};
//Declaring 4 elements in the String array
for(int i=0;i<=arr.length;i++) {
//Here, no element is present at the iteration number arr.length, i.e 4
System.out.println(arr[i]);
//So it will throw ArrayIndexOutOfBoundException at iteration 4
}
}
}
输出:
ArrayIndexOutOfBoundsException的构造方法
以下类型的ArrayIndexOutOfBoundException构造函数是-
建设者 | 描述 |
---|---|
ArrayIndexOutOfBoundsException() | 它构造了ArrayIndexOutOfBoundsException, 没有任何细节显示在控制台中。 |
ArrayIndexOutOfBoundsException(int index) | 它使用指示索引是非法的索引变量构造ArrayIndexOutOfBoundsException |
ArrayIndexOutOfBoundsException(String s) | 它使用指定的详细消息构造ArrayIndexOutOfBoundsException。 |
如何避免ArrayIndexOutOfBoundsException
- 引起ArrayIndexOutOfBoundsException的最大问题之一是数组的索引以0而不是1开头, 最后一个元素的数组长度为-1索引, 因此, 用户在访问数组的元素时通常会犯一个错误。数组。
- 在进行循环的开始和结束条件时请务必小心。
- 如果遇到任何此类异常, 请尝试调试代码。
- 使用增强的for循环增强的for循环是对连续内存分配进行迭代并且仅对合法索引进行迭代的循环。例如:-
public class ArrayIndexOutOfBoundException {
public static void main(String[] args) {
ArrayList<String> listOfPlayers = new ArrayList<>();
listOfPlayers.add("Rohit");
listOfPlayers.add("Shikhar");
listOfPlayers.add("Virat");
listOfPlayers.add("Dhoni");
for(String val : listOfPlayers){
System.out.println("Player Name: "+val);
}
}
}
- 使用类型安全的迭代器类型安全的迭代器在迭代集合并对其进行更改时不会抛出异常, 因为它们会为集合创建快照并对其进行更改。例如-
HashMap<Integer, Integer> map = new HashMap<>();
map.put(1, 1);
map.put(2, 2);
map.put(3, 3);
map.put(4, 4);
final Iterator<Integer> it = map.Keyset().iterator();
for (int i = 0; it.hasNext(); i++)
{
System.out.println(it.next());
}
评论前必须登录!
注册