您的位置:首页 > 编程语言 > Java开发

java高新技术之自动装箱拆箱

2012-07-20 00:16 946 查看
自动装箱拆箱是JDK1.5出现的新特性,主要的目的是方便封装类和基本类型之间的转化,该特性允许基本数据类型之间直接相互赋值.

下面看一段代码:
public class AutoBox {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer obj = 3;
System.out.println(obj+3);
Integer i1 = 12;
Integer i2 = 12;
Integer i3 =128;
Integer i4 =128;
System.out.println(i3==i4);
System.out.println(i1==i2);
}

}


输入结果为: 5

false

true

下面进行解释代码中obj为Integer类型,为一个引用类型,把obj赋值为3时,编译器自动把基本数据类型int类型的3装箱成Integer类型,然后赋给了obj,在System.out.println(obj+3);语句中,编译器又把obj自动拆箱为基本数据类型int类型,和3相加,

Integer i1 = 12;

Integer i2 = 12;

Integer i3 =128;

Integer i4 =128;

System.out.println(i3==i4);

System.out.println(i1==i2);}

至于这几段代码

对于基本类型的整数,要装箱成Integer对象的时候,如果这个数字在一个字节之内,即-128~127之间,一旦封装成Integer对象,就会把这个值缓存在一个池内,再装入一个对象时,会看这个池里有没有,有的话就直接把地址值赋给新装入的对象,否则new一个新对象,这样比较节省内存空间,感觉小的整数出现的频率会高一点,大家都会使用到,就把这个共享了,这就是所谓的享元模式,即当对象很小,很多个地方又会用到这个对象,需要整出很多个这样的对象来,但是弄出来那么多的对象是使用时是一模一样的,这时候就可以搞一个这样的对象,然后大家都使用这个对象,节省了内存空间,这一点和String在内存中的存放规则是类似的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐