在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,不能作为对象调用其toString()、hashCode()、getClass()、equals()等等方法。
自动装箱与拆箱
Java是面向对象的程序设计语言,在Java中我们处理的几乎都是对象.
在我们学习的过程中,遇到了基本数据类型:int,long,byte,short,char,float,double,boolean
在Java中这些并不是对象,它们只是纯粹的数据,除了数值本身的信息之外,基本数据类型不带有其他的信息或可操作的方法.
面向对象的好处就在于,对象本身可以携带更多的信息,所以如果基本数据类型可以对象的形式存在,它就可以带有更多的信息并提供相对应的操作方法.在#之前,如果想要让基本数据类型能像对象一样操作,那么要使用Integer,Long,Byte,Short,Character,Float,Double,Boolean等类来打包(Wrap)基本数据类型.Integer,Long,Byte,Short,Character,Float,Double,Boolean等类是所谓的Wrapper类.
下面来介绍一下装箱和拆箱:
装箱就是把一个基本数据类型封装到一个Wrapper类对象中;
拆箱就是把一个Wrapper对象中包含的数值赋给相应的基本数据类型变量.
在#之前,我们要执行装箱和拆箱操作,都是要手动进行的,例如:
装箱:
int data = 10;
Integer integer =
拆箱:
int i = #();
double d = #();
所以,在#之前,使用包装类是非常麻烦的.
从#开始,装箱和拆箱的动作是隐含的,可以自动的进行装箱和拆箱动作,例如:
自动装箱:
int data = 10;
Integer integer = data;当然你也可以这样写:Integer integer = 10;
自动拆箱:
int i = integer;
自动装箱和拆箱的功能事实上是编译器来帮您好的忙,编译器在编译时依你所编写的语法,决定是否进行装箱和拆箱动作.例如:
Integer integer = 10;
相当于编译器自动为你作以下的语法编译:
Integer integer = new Integer(10);
所以,自动装箱与拆箱的功能是由编译器给你提供的方便.
自动装箱、拆箱的功能提供了方便性,但隐藏了一些细节,所以使用的时候必须要小心。建议新手不要使用自动装箱、拆箱的语法,最好在对对象有了较深入的了解之后,再来使用这个功能。