个性化阅读
专注于IT技术分析

Java中的ArrayIndexOutOfBoundsException

本文概述

每当我们尝试以数组中不存在的索引访问数组的任何项时, 都会发生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			
		}

	}

}

输出:

Java中的ArrayIndexOutOfBoundsException

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());
}

赞(0)
未经允许不得转载:srcmini » Java中的ArrayIndexOutOfBoundsException

评论 抢沙发

评论前必须登录!