基本数据的自动拆装箱及享元设计模式

、基本数据的自动拆装箱及享元设计模式

自动拆装箱:

自动拆箱:把引用类型转变为值类型

自动装箱:把类型转变为引用类型

享元模式:

很多小的对象,他们有很多相同的属性,那么我们把它们作为一个对象,他们相同的属性我们叫内部状态;若他们很多对象的属性不同,那我们把它们的属性作为方法的参数,我们叫这些属性为外部状态

例:

运行结果:

15

s1s2是否指向同一对象:true

i1i2是否指向同一对象:true

i1ai2a是否指向同一对象:false

i3i4是否指向同一对象:true

i3ai4a是否指向同一对象:false

这里可以看得到i1i2比较,地址值相同,但i1ai2a比较,地址值都不同!在这里用到了享元设计模式,当i1值与i2基本数值要装箱成Integer类型时,如果这个值在一个字节之内(-128~127),系统就会将这个数值存起来,放在一个缓冲池里,当要创建下一个数对象时,会到缓冲池中搜索这个值,如果有这个值,值引用指向这个对象,这样就能节省对象空间,降低系统消耗。

当超过了一个字节所能表示的范围,就会成为false,因为可能一个字节里值了出现的频率比较高!

你可能感兴趣的:(动拆装箱)