Java中的Integer缓存池

简介: Java中的Integer缓存池

写在前面


要说Java中有哪些比较有意思的基础知识点,那估计就可以说一下我们平时使用最多的整型数据类型中的缓存池了。


而今天我们要说的就是Integer中的缓存池,从这个缓存池就能大概能了解其他整型数据类型的缓存池了,大概实现原理都差不多的。


同时也告诉大家,基础知识非常重要,这些是我们的根基所在。


Integer中的缓存池


Integer缓存池第一次出现是在JDK5中,在目前适用最多的JDK8中也多了一些不一样的处理方式。


说起Integer缓存池的话,就必须先来做一道题,来看一下:


Integer c1 = 1;
Integer c2 = 1;
Integer b1 = 130;
Integer b2 = 130;
System.out.println(c1 == c2);
System.out.println(b1 == b2);


这样的一道题,执行出来的结果是什么呢?


公布答案:


true
false


这是为什么呢?明明是同样的方式去声明对象,返回的值却是不同的,这就需要缓存池的概念啦,先来看Integer类中的一个内部类,IntegerCache,源码如下图所示:


image.png

我虽然没有贴全源码,但是大家可以自行去源码中查看,养成看源码的意识,其实并不是什么太可怕的事情。


IntegerCache类中声明了一个cache[]数组,这个数组就是用来存储一些已经声明过的值。


但是又是什么样的值才能存入这个缓存数组中呢,那么就要更加仔细的看源码了。


不过我在这可以先和大家说一下答案,那就是在最新的JDK8中IntegerCache类的存储范围在-128到127之间,这也是在源码中通读一遍就能理解的。


就算因为对基础不够扎实,对源码的理解不到位,那么我们也可以从注释上看出来,如下图,这样也能知道其的范围。

image.png


相关文章
|
3月前
|
存储 缓存 人工智能
Java int和Integer的区别
本文介绍了Java中int与Integer的区别及==与equals的比较机制。Integer是int的包装类,支持null值。使用==比较时,int直接比较数值,而Integer比较对象地址;在-128至127范围内的Integer值可缓存,超出该范围或使用new创建时则返回不同对象。equals方法则始终比较实际数值。
127 0
|
9月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
171 9
|
12月前
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
【10月更文挑战第19天】在 Java 中,可以通过设置 HTTP 响应头来确保 JavaScript 文件不被浏览器缓存。方法包括:1. 使用 Servlet 设置响应头,通过 `doGet` 方法设置 `Expires`、`Cache-Control` 和 `Pragma` 头;2. 在 Spring Boot 中配置拦截器,通过 `NoCacheInterceptor` 类和 `WebConfig` 配置类实现相同功能。这两种方法都能确保每次请求都能获取到最新的 JavaScript 内容。
128 1
|
12月前
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
大家好,我是 V 哥。本文探讨了 Java 后端确保 JavaScript 不被缓存的问题,分析了文件更新后无法生效、前后端不一致、影响调试与开发及安全问题等场景,并提供了使用版本号、设置 HTTP 响应头、配置静态资源缓存策略和使用 ETag 等解决方案。最后讨论了缓存的合理使用及其平衡方法。
210 0
|
消息中间件 缓存 监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
springboot的热部署、配置的宽松绑定和校验、任务、邮件、监控、springboot整合JdbcTemplate,h2等sql技术、整合redis,mongodb,es等nosql技术、整合redis,Memcached,jetcache,j2cache等缓存技术、整合ActiveMQ,RabbitMQ,RocketMQ,Kafka等消息的中间件的入门、整合缓存/任务/邮件/监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
361 1
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
123 0
|
缓存 算法 Java
EHCahce java 缓存框架使用
引用 :http://blog.sina.com.cn/s/blog_46d5caa40100ka9z.html 在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。本文主要介绍EHCache的使用,以及使用EHCache的实践经验。
926 0
|
9天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
54 1
|
9天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
45 1