Java 在Eclipse中检查if语句中的整型变量会给出空指针

Java 在Eclipse中检查if语句中的整型变量会给出空指针,java,eclipse,Java,Eclipse,这个问题与任何问题无关。只是想知道发生了什么 我有以下声明: Integer myInt = null; if(myInt!=null) { // it's not entering here... } 执行流正常,“if”语句中的行未正确执行。 但是,当高亮显示并检查ctrl+shift+i myInt时=null而不是false我在inspector中得到了一个错误,声明: myInt.intValue空指针异常 我想知道为什么Eclipse需要转换为int 更新 我已经纠正了这句话,

这个问题与任何问题无关。只是想知道发生了什么

我有以下声明:

Integer myInt = null;
if(myInt!=null) {
  // it's not entering here...
}
执行流正常,“if”语句中的行未正确执行。 但是,当高亮显示并检查ctrl+shift+i myInt时=null而不是false我在inspector中得到了一个错误,声明:

myInt.intValue空指针异常

我想知道为什么Eclipse需要转换为int

更新


我已经纠正了这句话,说检查员应该返回false。问题的关键在于为什么Eclipse在inspector中调用intValue,而不是讨论int或Integer。

通过检查Integer对象,Eclipse尝试调用

intValue()
Integer类的函数,返回该类的整数值,因为java希望以与比较int相同的方式比较整数

例如:

 int i = 5;
 if (i == 6){
    //Will never enter here
 }
将给您与相同的结果

 Integer i = new Integer(5);
 if (i == 6) {
    //Will never enter here
 }
因为java将为您自动取消装箱


如果整数为null,则调用函数intValue将camparison的整数i转换为数字5会引发null指针异常

我运行了完全相同的代码,并且运行良好,没有任何null指针异常。
代码中可能还有其他问题。

myInt=null应该返回false,而不是true,因为它是null。它试图获取int值是毫无意义的,因为int不能为null。顺便说一句,它不会发生在我的Eclipse中,它会产生“false”,可能Eclipse默认调用该方法,因为有两个选项:元素为null,任何if语句或比较都将失败,或者元素为数字。所以它认为不必担心,int不能为null,所以eclipse在任何情况下都试图获取它的值。首先,myInt=空永远不会给你真实。它总是错误的,因为您指定了myInt=null。您在代码中是否将myInt定义为Integer或int?最好查看一下这个[thread][1]。[1]: