根本数据的自动拆装箱及享元设计模式
基本数据的自动拆装箱及享元设计模式
、基本数据的自动拆装箱及享元设计模式
自动拆装箱:
自动拆箱:把引用类型转变为值类型
自动装箱:把值类型转变为引用类型
享元模式:
很多小的对象,他们有很多相同的属性,那么我们把它们作为一个对象,他们相同的属性我们叫内部状态;若他们很多对象的属性不同,那我们把它们的属性作为方法的参数,我们叫这些属性为外部状态
例:
运行结果:
15
s1和s2是否指向同一对象:true
i1和i2是否指向同一对象:true
i1a和i2a是否指向同一对象:false
i3和i4是否指向同一对象:true
i3a和i4a是否指向同一对象:false
这里可以看得到i1和i2比较,地址值相同,但i1a和i2a比较,地址值都不同!在这里用到了享元设计模式,当i1值与i2基本数值要装箱成Integer类型时,如果这个值在一个字节之内(-128~127),系统就会将这个数值存起来,放在一个缓冲池里,当要创建下一个数对象时,会到缓冲池中搜索这个值,如果有这个值,值引用指向这个对象,这样就能节省对象空间,降低系统消耗。
当超过了一个字节所能表示的范围,就会成为false,因为可能一个字节里值了出现的频率比较高!