A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sakuratossi 中级黑马   /  2014-8-30 16:55  /  693 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

装箱: 把基本的数据类型变成数据类型包装类, 用int类型举例,int类型的包装类对象是Integer
正常新建一个integer对象应该是这样,Integer i = new Integer(3);
用装箱的方法就是: Integer i = 3;
这里3就被自动装箱了。因为3属于基本数据类型的,它是不能直接赋值给一个对象Integer的,但是到了JDK1.5以后可以这样做。

拆箱:跟装箱相反。
Integer i = 3;
int j = i,  i是一个integer对象,按理说int类型j不能直接等于i,这是拆箱!


特别之处:
Integer obj = 3;
Integer obj1 = 3;
obj == obj1 ——— true;

Integer obj = 137;
Integer obj1 = 137;
obj == obj1 ——— false;

这是一个比较奇怪的现象,
java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象;

老师说,如果对象很小具有相同的东西,可以被重用,就像电脑中的文件夹,一个目录下有很多文件夹,这些文件夹是比较小的对象,具有相同的属性,因此被封装成一个对象。
java对于Integer与int的这种自动装箱与拆箱的设计,就是一种模式,享元模式(FlyWeight)。对于小对象它用来尽减少开辟内存空间。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马