享元模式

时间:2014-03-09 00:43:40   收藏:0   阅读:330

  享元模式的英文为Flyweight pattern .在说享元模式之前先看一段代码:

                Integer i1 = 1;
		Integer i2 = 1;
		System.out.println(i1 == i2); // true

 对于以上代码你可能会觉得奇怪,因为明明是比较的栈内存的地址是否相同,而两个只是对象的引用,为什么会出现这样的情况呢?别急再看下面代码:

                Integer i1 = 160;
		Integer i2 = 160;
		System.out.println(i1 == i2); // false

就会觉得非常奇怪,为什么都是Integer类型一个输入true,一个输出false呢?原因在这里就是jdk用到的享元模式。享元模式就是把一些常用的部分给单独提取出来,然后供大家用。

对于上面的结果出现的原因是:jdk把int类型的-128---127之间的数字缓存起来。如果有人定义了int类型并且值为-128----127之间,那么他们就共享内存中的一块单元。由于它们共享一块内存,所以指向的内存地址也就应该相同的。代码在内存中的图是i1和i2同时指向内存中的同一块区域。

======================================================

Integer i =1 //等价于 Integer i = new Integer(1) 

因为jdk会自动拆箱装箱。




享元模式,布布扣,bubuko.com

原文:http://blog.csdn.net/zl544434558/article/details/20804901

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!