自动拆箱与装箱
:
在JDK1.5中引入了自动拆箱/拆箱功能,可以实现简单类型和对应的封装类型的数据之间的转换。
例如: Integer i = 100; 这在JDK1.5之前是非法的.你不能把简单的数据类型赋值给引用类型变量.而在JDK1.5中.你可以通过自动
装箱,讲简单数据类型封装到对应的封装类中.形如: Integer i = new Integer(100);
这个功能的好处就是在那些本来只能接受引用类型的方法中,可以直接使用简单数据类型,而不再需要程序中转
型。举个例子:
享元模式:
就是有很多个小的对象,他们有很多属性相同,把他们封装成一个对象,那些不同的属性,把它们变为方法的
参数,称之为外部状态,那些相同的属性的称之为这个对象的内部状态。
例如:示例中的Integer对象,在-128~127范围内的Integer对象,用的频率比较高,就会作为同一个对象,因此
结果为true。超出这个范围的就不是同一个对象,因此结果为false。
享元应用:
在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下的文件夹图标,只是名称这个属性不同,包含了很多其他相同的属性,那么可以应用享元模
式。