黑马程序员_基本数据的自动拆装箱及享元设计模式

------- android培训java培训、期待与您交流! ----------
自动拆箱与装箱
         在JDK1.5中引入了自动拆箱/拆箱功能,可以实现简单类型和对应的封装类型的数据之间的转换。
         例如: Integer i = 100;  这在JDK1.5之前是非法的.你不能把简单的数据类型赋值给引用类型变量.而在JDK1.5中.你可以通过自动
         装箱,讲简单数据类型封装到对应的封装类中.形如:  Integer i  = new Integer(100);
         这个功能的好处就是在那些本来只能接受引用类型的方法中,可以直接使用简单数据类型,而不再需要程序中转
         型。举个例子:
public class Test {
     public static void main(String[] args) {
         Integer i = 3;//自动装箱,把int型的数据装箱成Integer类
         Integer i1 = new Integer(3);
         System.out.println(i);
         System.out.println(i +12);//自动拆箱,把Ingteger对象拆成int对象然后与12相加。
     }
}
           在jdk1.5之后都可以实现这样自动装箱和拆箱的操作。它的出现,为程序员省去了很多不必要的麻烦,提高了开发效率。
享元模式:      
         就是有很多个小的对象,他们有很多属性相同,把他们
封装成一个对象,那些不同的属性,把它们变为方法的
         参数,
称之为外部状态,那些相同的属性的称之为这个对象的内部状态。
         例如:示例中的Integer对象,在-128~127范围内的Integer对象,用的频率比较高,就会作为同一个对象,因此
         结果为true。超出这个范围的就不是同一个对象,因此结果为false。
public class TestBoxing{
	public static void main(String[] args){
		Integer t1 = new Integer(127);
		Integer t2 = new Integer(127);
		System.out.println(t1 == t2); // false
		Integer t3 = 127;
		Integer t4 = 127;
		System.out.println(t3 == t4); // true
		System.out.println(t1 == t4); // false
		Integer t5 = 128;
		Integer t6 = 128;
		System.out.println(t5 == t6); // false
	}
}

         对于t1 和t2 的关系.他们new运算产生的两个对象,指向的是不同地址.所以第一个输出false

         对于t 3 和 t4的关系 产生t4的时候会自动装箱去内存找到了跟他一样的t3.指向了同一地址.所以他是true

         对于t5 和t6 的关系 由于不在拆装箱范围内(-128~~127) 所以 跟 t1 和t2 的关系 是一样的.  也是形如通过new产生的数据


享元应用:     

          1、Word中输入英文字母,可创建26对象。

               每个对象值是出现的位置不同(坐标),所以可用一个对象调用位置的方法。

         2、图标:Window下的文件夹图标,只是名称这个属性不同,包含了很多其他相同的属性,那么可以应用享元模

         式。

 ------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值