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]: