什么是自动拆箱和自动装箱

什么是自动拆箱和自动装箱

Java中基本类型有八种,可以分为四类:
整形:
byte(一个字节来存储,范围为-2^7— 2^7-1),
short (两个字节来存储,范围为-2^15— 2^15-1),
int(四个字节来存储, -2^31— 2^31-1) ,
long(八个字节来存储,范围为-2^63— 2^63-1)
浮点型:float,double
字符型:char
布尔类型:boolean

注意事项:
同类型在进行计算时,可能会超出范围,产生溢出。溢出并不会报异常也没有任何的提示。所以在进行同类型计算式一定要注意计算的结果会不会产生溢出。


包装类型:

java是一个面向对象的语言,但是java的基本类型确是不面向对象的,为解决这个问题在设计类时,每个基本类型都设计了一个对应的类进行表示,这样和八个基本类型相对应的类称为包装类(wrapp calss)。


包装类位于java.lang包,包装类和基本类型的对应关系如下:

基本数据类型 包装类
bety Bety
short Shoty
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

为什么需要包装类:

因为java要面向对象,所以创建包装类使其拥有对象的特征,,并且为其添了相应的属性和方法,丰富了基本类型的操作,


拆箱和装箱:

有了基本类型和包装类型,之间肯定要进行转换。
我们认为包装类是基本类型的包装,所以把基本类型转换为包装类型的过程称之为装箱(boxing);
反之将包装类转换为基本类型的过程称之为拆箱(unboxing);

在JAVA SE5之前需要手动进行装箱工作可以通过以下代码实现:

Integer i=new Integer(1);

自动拆箱与自动装箱
JAVASE5中为了解决这一问题,java提供了自动装箱和自动拆箱功能。
自动装箱:就是将基本数据类型自动转换为对应的包装类;
自动拆箱:就是将包装类自动转换为基本数据类型:

Integer i=1;//自动装箱

int   a=i;	//自动拆箱

Integer i=1;可以代替Integer i=new Integer(1),提供自动装箱功能后不需要开发者手动去new一个Integer的对象;

注意:

自动拆箱也会带来一些问题,当包装对象的数值进行比较时,不能简单的使用==来进行判断,当该对象的数值在-128—127之间时可以进行比较,超出范围时应该使用equals进行比较;

		Integer a=2;
        Integer b=2;
        System.out.println(a==b);
        System.out.println(a.equals(b));
        
 输出结果为:
        true
		true
		Integer a=200;
        Integer b=200;
        System.out.println(a==b);
        System.out.println(a.equals(b));
 输出结果为:
        false
		true

发布了10 篇原创文章 · 获赞 0 · 访问量 121

猜你喜欢

转载自blog.csdn.net/DONG__CHI/article/details/103689729
今日推荐