Java 数组越界异常?

Java 数组越界异常?,java,Java,考虑以下代码: Map<Integer, Material> TestMap= new HashMap<Integer, Material>(); if (TestMap.get(index)!= null) { index++; } 如果TestMap.getindex为空,会发生什么情况?有人说它将退出代码,有人说它将抛出ArrayIndexOutOfBoundsException。您的代码不会抛出ArrayIndexOutOfBoundsExceptio

考虑以下代码:

Map<Integer, Material> TestMap= new HashMap<Integer, Material>();

if (TestMap.get(index)!= null) {
    index++;
}
如果TestMap.getindex为空,会发生什么情况?有人说它将退出代码,有人说它将抛出ArrayIndexOutOfBoundsException。

您的代码不会抛出ArrayIndexOutOfBoundsException,因为它是一个HashMap。根据HashMap的get方法的文档:

公共V getObject密钥

返回指定键映射到的值,如果此映射不包含该键的映射,则返回null

因此,如果HashMap不包含ìndex的值,if将返回null,那么没有问题

编辑

如果您的HashMap是一个列表,并且添加了10个元素,并且在列表上调用了get25,那么您将获得ArrayIndexOutOfBoundsException

总而言之

if (TestMap.get(index)!= null) {
    index++;
}

这段代码不会抛出任何异常,除非TestMap为null。如果给定的键没有值,get将返回null,并且由于执行了null检查,因此当映射中不存在该键时,不会输入If。

什么循环?什么是测试地图?HashMap?为什么不试试?你的循环在哪里?如果为空,则不会输入您的If条件。请提供完整的源代码?If。。。。不是循环,而是控制流语句。