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

本文详细介绍了Java中自动装箱和拆箱的概念及其实现原理,特别是针对Integer对象的创建过程进行了深入探讨,包括-128到127之间的整数会被缓存以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      

       自动装箱拆箱是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在内存中的存放规则是类似的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值