享元模式:可以提高系统性能的设计模式之一,它的核心思想如果系统中存在多个相同的对象,那么只需要共享一份对象的copy,而没必为每次使用都创建新的对象,一般会与工厂类一同使用,由于创建对象的次数减少对于内存的需求也就较低,对于GC的压力也也有所减少,简单的说,即共享同一个对象
public class Test { public static void main(String[] args) { Integer i = 2; Integer j = 2; System.out.println(i==j); //true Integer m = 200; Integer n = 200; System.out.println(m==n); //false }}
对于为啥会出现这种情况,可以查看Integer类中的valueOf方法,实际上Integer 类初始化了一个数组,这个数组包含-128到127的数,当变量小于127时,会直接返回数组中的对象,而不是创建这个对象,当大于127时,便会new 一个对象出来。
这也就解释了上面的输出情况。这里的设计思想也就是用到了享元模式的思想,将小范围但需大量使用的数字先初始化,直接返回需要的对象,这是典型的以时间换取空间的思想