Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在将值为null的整型变量赋给int变量后,我会得到一个NPE?_Java - Fatal编程技术网

Java 为什么在将值为null的整型变量赋给int变量后,我会得到一个NPE?

Java 为什么在将值为null的整型变量赋给int变量后,我会得到一个NPE?,java,Java,我想知道编译器是如何读取这段代码的 public class obj { public static void main(String[] args) { Integer obj = null; //line4 int x = obj; //line 5 System.out.println(x); //line6 } } 我的理解是第5行可以自动取消装箱,这意味着它将Integer类型转换为primitiveint 但是

我想知道编译器是如何读取这段代码的

public class obj {
    public static void main(String[] args) {
        Integer obj = null; //line4
        int x = obj;   //line 5
        System.out.println(x); //line6  
    }
}
我的理解是第5行可以自动取消装箱,这意味着它将
Integer
类型转换为primitive
int


但是我没有在
x
上调用任何方法,只是打印。为什么它会给我一个
NullPointerException

Java有一种称为自动装箱的东西,其中整数对象自动转换为int-primative。

Java有一种称为自动装箱的东西,其中整数对象自动转换为int-primative。

Java有一种称为自动装箱的东西,其中整数对象自动转换为int-primative灵长类。

Java有一种称为自动装箱的东西,其中整数对象自动转换为int灵长类。

这里的自动装箱意味着

int x = obj; 
实际上是:

int x = obj.intValue();

因此出现了NullPointerException,因为obj为null。

这里的自动装箱意味着

int x = obj; 
实际上是:

int x = obj.intValue();

因此出现了NullPointerException,因为obj为null。

这里的自动装箱意味着

int x = obj; 
实际上是:

int x = obj.intValue();

因此出现了NullPointerException,因为obj为null。

这里的自动装箱意味着

int x = obj; 
实际上是:

int x = obj.intValue();
因此出现了NullPointerException,因为obj为null。

看看字节码

javap -c com.interviews.practise.obj
看看字节码

javap -c com.interviews.practise.obj
看看字节码

javap -c com.interviews.practise.obj
看看字节码

javap -c com.interviews.practise.obj

阅读有关自动装箱和拆箱的内容<代码>空值不能分配给自动装箱和取消装箱时读取的类型为
int
的变量<代码>空值不能分配给自动装箱和取消装箱时读取的类型为
int
的变量<代码>空值不能分配给自动装箱和取消装箱时读取的类型为
int
的变量
null
不能分配给类型为
int
的变量,所以它只是将对象转换为基元,那么为什么我们在没有调用它的任何方法的情况下得到异常呢?为什么它只是将对象转换为基元,为什么我们在没有调用它的任何方法的情况下得到异常呢,那么,如果我们没有调用它的任何方法,那么为什么我们会得到异常呢?如果我们没有调用它的任何方法,那么为什么我们会得到异常呢