美文网首页Java专题Android面试题解析
面试题:Java中有了基本数据类型,为何还要有对应的包装器类?

面试题:Java中有了基本数据类型,为何还要有对应的包装器类?

作者: 千夜零一 | 来源:发表于2020-09-23 10:26 被阅读0次

    引言

      你有没有想过,为了什么Java中已经有了8种基本的数据类型,还要有它们所对应的8种包装器类呢?通常这也是面试官会问到的问题。话不多说,今天一篇文章解决它!让你的面试畅通无阻~


    Java中的8种基本数据类型

    boolean,char,int,byte,short,long ,float,double


    对应8种包装器类

    Boolean,Character,Integer,Byte,Short,Long,Float,Double


    为什么存在基本数据类型

      在Java语言中,我们通过new关键字创建的对象,都存储在堆中。但是我们经常要用到的类型,如int,如果还是像对象一样存储在堆中就有点小题大做,因为它们都是一些特别小的变量。因此在java中的原则就是,使用基本数据类型,将int等基本数据类型创建的变量值,直接存储在栈中,更加高效。


    有了基本数据类型为何还要有包装器类

      Java语言是一门面向对象编程的语言,但基本数据类型并不具备对象的特质,为了让基本数据类型也具备对象的特性,因此就出现了包装器类型,它相当于将基本数据类型给“包装”起来,使得它们具备对象的性质,并且为其添加了属性和方法,丰富了基本数据类型的操作。


    什么情况下使用包装器类呢?

      使用到集合Collection的时候:比如往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了。


    两者的区别

    1. 声明方式不同:

    基本类型不使用new关键字,而包装器类需要使用new关键字;

    2. 存储方式及位置不同:

    基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

    3. 初始值不同:

    基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;

    4. 使用方式不同:

    基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。


    两者互相转换

    int 转 Integer

    int i = 0;  
    Integer x = new Integer(i);
    

    Integer 转 int

    Integer m = new Integer(0);  
    int n = m.intValue();
    

    “银鞍照白马,飒沓如流星”,如果对你有所帮助,就点个赞吧!我会每天日更,欢迎关注,一起学习成长!

    相关文章

      网友评论

        本文标题:面试题:Java中有了基本数据类型,为何还要有对应的包装器类?

        本文链接:https://www.haomeiwen.com/subject/kytgyktx.html