Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference

日志信息:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference

引起此异常代码

HashMap map = new HashMap();
int value = map.get("key")

就会报此异常。
查看HashMap#get()方法

public class HashMap
    extends AbstractMap
    implements Map, Cloneable, Serializable
{

    public V get(Object key) {
        if (key == null)
            return getForNullKey();
        Entry entry = getEntry(key);

        return null == entry ? null : entry.getValue();
    }

    private V getForNullKey() {
        if (size == 0) {
            return null;
        }
        for (HashMapEntry e = table[0]; e != null; e = e.next) {
            if (e.key == null)
                return e.value;
        }
        return null;
    }
}

看HashMap#getForNullKey()中第一行,当size == 0 时会return null ,返回到int value = map.get("key")
即int value = null;就抛出了此异常;

衍生:

  • 将null赋值给int是会报此异常,那么同理将null赋值给float、double、long会不会也报此异常?

  • 源码中size = 0 时return null 那么几种情况导致map size = 0?
    无put
    调用clear()方法

你可能感兴趣的:(Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference)