0 != null 为什么报指针?

忘是亡心i 2021-11-01 12:18 386阅读 0赞

大家好,这是我第一次写博客,来分享我平时工作中遇到的问题及平时学习的技术,如果有写的不好或者不对的地方还望大家能够指出和包涵。

那么接下来就开始说下我工作中遇到的这个问题,我写了一个test,如下:

  1. @Test
  2. public void test9() {
  3. Integer a = null;
  4. if (0 != a) {
  5. System.out.print("12344");
  6. }
  7. }

执行之后,报了空指针,当时一直不知道为什么,后来查阅资料发现原来是自动拆箱的问题,那么接下来我来仔细讲解一下:

1.首先我们先了解下什么是自动拆箱,装箱?

简单来说装箱就是自动将基本数据类型转换为包装类型,拆箱就是自动将包装类型转换为基本数据类型。

  1. //自动装箱
  2. Integer a = 100;
  3. //真正执行的是
  4. Integer a = Integer.valueOf(100);
  5. //自动拆箱
  6. int b = a;
  7. //真正执行的是
  8. int b = a.intValue();

2.不同类型用 != 比较时,包装类自动拆箱。

3.Integer是包装类,默认值是null;int是基本数据类型,默认值是0。

4.大家现在再看下我上面写的那个test就会发现由于0是int类型,a是Integer类型,所以当0 != a 时候,a会自动拆箱,执行a.intValue(),由于a = null,所以就报了空指针。

嘻嘻,第一次写,还是写的不够好,以后会继续?。

有不懂的地方或者问题都可以给我留言哈,嘻嘻。

转载于:https://www.cnblogs.com/wwxzdl/p/11080146.html

发表评论

表情:
评论列表 (有 0 条评论,386人围观)

还没有评论,来说两句吧...

相关阅读

    相关 0, \0, NULL

    字符串、字符数组输入、输出与'\0'的问题 原创首发,欢迎转载! 作者按 字符串、字符数组以"%s"格式输入时,以遇到'空格'为这个字符串输入结

    相关 0 != null 为什么指针

    大家好,这是我第一次写博客,来分享我平时工作中遇到的问题及平时学习的技术,如果有写的不好或者不对的地方还望大家能够指出和包涵。 那么接下来就开始说下我工作中遇到的这个问题,我