数组超出绑定异常?

时间:2014-12-23 07:19:05

标签: java

请考虑以下代码:

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

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

如果TestMap.get(index)null会怎样?有人说它会退出代码,有人说它会抛出ArrayIndexOutOfBoundsException

1 个答案:

答案 0 :(得分:3)

您的代码不会抛出ArrayIndexOutOfBoundsException,因为它是HashMap。根据{{​​1}}的{​​{1}}方法的文档:

  

public V get(对象键)

     

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

因此,如果get()不包含HashMap的值,if将返回null,那里没有问题。

修改

如果您的HashMapìndex,并且您添加了10个元素,并且您在 HashMap 上调用了List,则那么你会得到get(25)

总结

List

这段代码不会抛出任何异常(除非TestMap为null)。如果给定键没有值,ArrayIndexOutOfBoundsException将返回null,并且由于您执行了空检查,因此当地图中的键不存在时,不会输入if。