面试题:Java中有了基本数据类型,为何还要有对应的包装器类?
引言
你有没有想过,为了什么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();
“银鞍照白马,飒沓如流星”,如果对你有所帮助,就点个赞吧!我会每天日更,欢迎关注,一起学习成长!