当前位置: 首页 > wzjs >正文

微网站建设方向亿建联网站是谁做的

微网站建设方向,亿建联网站是谁做的,成免费crm软件app,西安建筑网站前言 在Java中,每一个基本类型都有对应的包装类。其中,Integer作为最常用的包装类之一,其内部实现巧妙地运用了享元模式(Flyweight Pattern),通过对象缓存机制显著提升了性能。本文将深入剖析Integer类的享…

前言

Java中,每一个基本类型都有对应的包装类。其中,Integer作为最常用的包装类之一,其内部实现巧妙地运用了享元模式(Flyweight Pattern),通过对象缓存机制显著提升了性能。本文将深入剖析Integer类的享元模式实现,重点解析valueOf()方法的底层源码。

一、享元模式是什么?

享元模式是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的复用。在Java包装类中,享元模式的核心思想是:

  • 缓存常用对象:对一定范围内的值进行预缓存
  • 减少对象创建:通过复用缓存对象降低内存开销
  • 提升性能:避免频繁的对象创建与垃圾回收

Java中,包装类如Integer便采用了享元模式,以缓存常用的整数值,提升性能

二、Integer源码解析

valueOf()方法

Integer类的valueOf()方法是享元模式的核心,它通过缓存机制避免了频繁的对象创建。具体实现如下:

valueOf()方法源码:

 @IntrinsicCandidatepublic static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

当调用valueOf()方法时,首先会检查传入的整数是否在缓存的范围内:

  • 在缓存范围内:直接返回缓存中的对象,避免重新创建。
  • 不在缓存范围内:创建新的Integer对象。

IntegerCache类

IntegerCache类实现了缓存机制,缓存了从 -128 到 127 的所有Integer对象。其源码如下:

/*** Integer 缓存类(享元模式实现)* 用于缓存常用 Integer 对象,优化内存和性能*/private static class IntegerCache {static final int low = -128;  // 缓存下限static final int high; // 缓存上限(可配置)static final Integer[] cache; // 缓存数组static Integer[] archivedCache; // 从 CDS 归档文件加载的缓存数组(JDK 17 新增)static {int h = 127;  // 默认缓存上限为 127// 尝试读取 JVM 参数配置的缓存上限String integerCacheHighPropValue =VM.getSavedProperty("java.lang.Integer.IntegerCache.high");if (integerCacheHighPropValue != null) {try {// 确保配置值不低于 127h = Math.max(parseInt(integerCacheHighPropValue), 127);// 防止缓存数组大小超过 Integer.MAX_VALUE// 计算逻辑:数组最大长度 = Integer.MAX_VALUE - (-low) -1h = Math.min(h, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// 忽略格式错误(保持默认值 127)}}high = h; // 确定最终缓存上限// 尝试从 CDS 归档文件加载缓存(JDK 17 优化点)CDS.initializeFromArchive(IntegerCache.class);int size = (high - low) + 1;// 动态生成缓存数组的条件:// 1. 归档缓存不存在 或 2. 当前需要的缓存大小 > 归档缓存长度if (archivedCache == null || size > archivedCache.length) {// 创建新缓存数组Integer[] c = new Integer[size];int j = low; // 起始值for(int i = 0; i < c.length; i++) {c[i] = new Integer(j++); // 预生成所有缓存对象}archivedCache = c; // 更新归档缓存}cache = archivedCache; // 指向最终缓存数组// 断言确保缓存上限至少为 127(符合 JLS 规范)assert IntegerCache.high >= 127;}// 私有构造方法(防止外部实例化)private IntegerCache() {}
}

如何提高性能?

通过享元模式Integer.valueOf()方法只会创建缓存范围内的对象,而不需要每次都new一个新的Integer对象。这一机制显著降低了内存开销,避免了不必要的垃圾回收。

三、面试题

以下代码会输出什么?

public class Main {public static void main(String[] args) {Integer i1 = new Integer(100);Integer i2 = new Integer(100);System.out.println(i1==i2); // false}
}

注意:这里Integer是对象,==比较的是对象的引用,而不是对象的内容。

public class Main {public static void main(String[] args) {Integer i1 = 100;  // 自动装箱机制,在底层会自动调用静态方法valueOf的得到一个Integer对象Integer i2 = 100;Integer i3 = 200;Integer i4 = 200;System.out.println(i1==i2); // trueSystem.out.println(i3==i4); // false}
}

补充:Integer的常用成员方法
在这里插入图片描述
注意:8中包装类中,除了Character都有对应的parseXxx的方法,进行类型转换


文章转载自:

http://dXVG6ImO.mcwgn.cn
http://efJQsCQJ.mcwgn.cn
http://LarDo0YD.mcwgn.cn
http://lYZMKopb.mcwgn.cn
http://IcHyH6bn.mcwgn.cn
http://glF7rW0h.mcwgn.cn
http://4VG51J8p.mcwgn.cn
http://aD4z05lv.mcwgn.cn
http://c0BB40pW.mcwgn.cn
http://LzCMCxY8.mcwgn.cn
http://Z7mssCMj.mcwgn.cn
http://lBoL6KGo.mcwgn.cn
http://uBgTIQTJ.mcwgn.cn
http://ydpEcdBO.mcwgn.cn
http://Rpp3KMsU.mcwgn.cn
http://APvDtLDR.mcwgn.cn
http://ZzM6RJ2m.mcwgn.cn
http://5vpf0AQF.mcwgn.cn
http://HhEhaGN1.mcwgn.cn
http://aPPO83KZ.mcwgn.cn
http://AQzXcUxy.mcwgn.cn
http://BZceSGHO.mcwgn.cn
http://QEXiR9BF.mcwgn.cn
http://0x20hX43.mcwgn.cn
http://NvanerOB.mcwgn.cn
http://8Qc9bu03.mcwgn.cn
http://Ya69DDMJ.mcwgn.cn
http://HIxFBCwc.mcwgn.cn
http://nGd9Aey5.mcwgn.cn
http://AMizan5W.mcwgn.cn
http://www.dtcms.com/wzjs/728667.html

相关文章:

  • 大气的网站源码龙岩找工作网站
  • 深圳住房和建设局网站咨询窗口柘城网站建设
  • 网站建设的宣传词包头网站建设包头
  • a5建站网站建设的常用技术
  • 广州建站费用wordpress图片目录
  • asp网站优化访问速度苏州城乡建设网站查询
  • 卫龙的网站做的污污分天长做网站公司
  • 抚州网站网站建设python策略网站怎么做
  • 深圳flash网站建设wordpress单本小说模板
  • 徐州建设局网站安全证中国建设工程机械网站
  • 外贸网站制作推广公司flash里面如何做网站链接
  • 安全狗网站白名单指什么落地页制作用什么软件
  • 广州市门户网站建设品牌电子商务网站建设对毕业设计
  • 网站建设构成技术要求谷歌浏览器下载安装
  • 网站策划书基本项目网站开发流程荆州
  • 建设企业网站企业网上银行登录楼市房价最新消息
  • 西安学校网站建设哪家专业如何在阿里云建设网站
  • 什么网站对护肤品测评做的很好太原网页
  • 常用的网站有多种类型安装 wordpress 500错误
  • 网站是否有备案做网站可以找设计公司吗
  • 建立个人网站用虚拟主机视频解析网站制作
  • .net最新网站开发wordpress 4.0模板
  • 怎样安装网站模板设计网站公司湖南岚鸿设计
  • 泰顺机械网站建设清理wordpress头部
  • 如何建设网站地图宁波seo关键词优化设计
  • 网站建站行业公司主页建设汕头网站建设优化
  • 网站如何做聚合页面贵州省住房和城乡建设厅网站官网
  • 网站开发市场分析企业互联网
  • 怎么让付费网站免费wordpress 修改footer
  • 最好的网站建设公司八种营销模式