你们好,这是我第一次写博客,来分享我平时工做中遇到的问题及平时学习的技术,若是有写的很差或者不对的地方还望你们可以指出和包涵。java
那么接下来就开始说下我工做中遇到的这个问题,我写了一个test,以下:学习
@Test public void test9() { Integer a = null; if (0 != a) { System.out.print("12344"); } }
执行以后,报了空指针,当时一直不知道为何,后来查阅资料发现原来是自动拆箱的问题,那么接下来我来仔细讲解一下:spa
1.首先咱们先了解下什么是自动拆箱,装箱?指针
简单来讲装箱就是自动将基本数据类型转换为包装类型,拆箱就是自动将包装类型转换为基本数据类型。code
//自动装箱 Integer a = 100; //真正执行的是 Integer a = Integer.valueOf(100); //自动拆箱 int b = a; //真正执行的是 int b = a.intValue();
2.不一样类型用 != 比较时,包装类自动拆箱。 blog
3.Integer是包装类,默认值是null;int是基本数据类型,默认值是0。博客
4.你们如今再看下我上面写的那个test就会发现因为0是int类型,a是Integer类型,因此当0 != a 时候,a会自动拆箱,执行a.intValue(),因为a = null,因此就报了空指针。class
嘻嘻,第一次写,仍是写的不够好,之后会继续💪。test
有不懂的地方或者问题均可以给我留言哈,嘻嘻。数据类型