jdk1.5新特性:基本数据类型的自动装箱和拆箱,基本数据类型和它所对应的包装类可以自动转换,
如果一个数值在一个字节之内(-128~127之间的数值),那么在自动装箱的时候系统会把这个包装类对象缓存起来,如果下一次同样的数值需要自动装箱,那么就直接引用之前缓存起来的那个数值相同的对象。
Integer i1=100;Integer i2=100;Integer i3=200;Integer i4=200;
System.out.println(i1==i2); //true因为100是在一个字节之内,就只有一个对象
System.out.println(i1==i2); 这里运行结果也是true的
System.out.println(i3==i4); 这句因为200已经超出了一个字节,就创建了两个对象,运行结果就是false
以上就是java中的享元模式(flyweight): 有很多个小的对象,他们有很多属性相同,就把他们变成一个对象,
那些不同的属性就设为方法的参数传进来,叫外部属性或外部状态。享元模式会大幅度的降低内存中对象的数量。
|