软件设计:0!=null为什么报指针?

    作者:王小鑫更新于: 2020-04-15 15:12:02

      在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。

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

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

      @Test

      publicvoidtest9(){

      Integera=null;

      if(0!=a){

      System.out.print("12344");

      }

      }

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

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

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

      //自动装箱

      Integera=100;

      //真正执行的是

      Integera=Integer.valueOf(100);

      //自动拆箱

      intb=a;

      //真正执行的是

      intb=a.intValue();

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

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

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

      指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

课课家教育

未登录