观察这种情况令我非常困惑:
Integer i = null;
String str = null;
if (i == null) { //Nothing happens
...
}
if (str == null) { //Nothing happens
}
if (i == 0) { //NullPointerException
...
}
if (str == "0") { //Nothing happens
...
}
因此,我认为装箱操作首先执行(即Java尝试从中提取int值null),而比较操作的优先级较低,这就是引发异常的原因。
问题是:为什么要用Java这样实现?为什么装箱优先于比较参考?或者为什么他们没有null在装箱前实施验证?
此刻,当NullPointerException它与包装的基元一起被抛出而与真实的对象类型没有被抛出时,它看起来不一致。
人到中年有点甜
跃然一笑
BIG阳
相关分类