享元模式定义如下:
享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
public static void main(String[] args) {
m = new Integer(2);
n = new Integer(2);
System.out.println(m == n);
//new 关键字每次都会在堆内存上开辟一块新的空间用于存放创建出来的对象,创建出来的对象是新的对象
Integer m = Integer.valueOf(1);
Integer n = Integer.valueOf(1);
System.out.println(m == n);
//默认情况下,如果使用 Integer.valueOf(int) 创建的 Integer 对象值在 -128 ~ 127 之间,那么无论创建多少次,创建的每一个对象使用== 关系操作符得到的结果都是true,否则都是false。
Integer i = Integer.valueOf(300);
Integer j = Integer.valueOf(300);
System.out.println(i == j);
}
总结:
通过静态工厂 Integer.valueOf(int) 来创建 Integer 对象,首先会判断创建的对象值是否有缓存,有的话取缓存中的值,没有则通过new Interger(int) 创建并返回。
我们以后在创建 Integer 的包装类型时,尽量使用Integer.valueOf()来创建