设计模式——享元模式

一. 概念

在这里插入图片描述
jvm的众多池就是利用了享元模式。如串池、IntegerCache等。以及线程池、连接池。

二. 组成

在这里插入图片描述
内部状态:抽象享元模式、具体享元
外部状态:非享元

三. 案例

在这里插入图片描述
通过实现单例工厂,并在工厂中预先放置具体享元(HashMap存放),且不开放更改HashMap的接口。

四. 优缺点

在这里插入图片描述

五. IntegerCache与自动装箱拆箱

首先明确,这是两个截然不同的概念。所谓自动装箱是自动将int类型转变为Integer类型。
有三种情况触发自动装箱,

  • Integer a = 10000; //int = 赋值给Integer
  • method(10000) //int作为方法形参
  • ArrayList.add(10000) //Collection集合类添加int元素
    注意new Integer的方式不会触发装箱。
    可以通过valueOf方法实现手动装箱

对于IntegerCache而言,Integer对象对-128到127之间的数值进行了预缓存。在任何装箱操作时,都会尝试获取缓存作为Integer变量的指向。如果获取不到才会尝试去new一个Integer对象。

实际上自动装箱操作的底层都是调用valueOf方法。
注意:装箱没有数值范围限制,任何范围都可以装箱。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值