Java包装类型的缓存

Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。

**Byte,Short,Integer,Long**这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False

果超出对应范围仍然会去创建新的对象,缓存的范围区间的大小只是在性能和资源之间的权衡。

两种浮点数类型的包装类 Float,Double 并没有实现缓存机制。

java 复制代码
public static void main( String[] args )
    {
        Integer i1 = 128;
        Integer i2 = 128;
        System.out.println(i1 == i2);// 输出 false

        Integer i3 = 33;
        Integer i4 = 33;
        System.out.println(i3 == i4);// 输出 true

        Float i11 = 333f;
        Float i22 = 333f;
        System.out.println(i11 == i22);// 输出 false

        Double i5 = 1.2;
        Double i6 = 1.2;
        System.out.println(i6 == i5);// 输出 false

        Integer i7 = 40;
        Integer i8 = new Integer(40);
        System.out.println(i7==i8);//输出false,因为i7直接用的缓存,i8则是创建的对象,存在堆
    }

装箱其实就是调用了 包装类的valueOf()方法,拆箱其实就是调用了 xxxValue()方法。

java 复制代码
Integer i = 10 //等价于 Integer i = Integer.valueOf(10)
int n = i //等价于 int n = i.intValue();
相关推荐
humors22112 小时前
服务端开发案例(不定期更新)
java·数据库·后端·mysql·mybatis·excel
百***680412 小时前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
庸子12 小时前
Kubernetes调度器深度解析:从资源分配到亲和性策略的架构师之路
java·算法·云原生·贪心算法·kubernetes·devops
Alberta ゙12 小时前
C++初阶
开发语言·c++
the白勺12 小时前
RabbitMQ-基础-总结
开发语言·c#
Dev7z13 小时前
基于Matlab多目标粒子群优化的无人机三维路径规划与避障研究
开发语言·matlab·无人机
_Jimmy_13 小时前
Nacos的三层缓存是什么
java·缓存
沐知全栈开发13 小时前
HTML 脚本:基础、应用与未来趋势
开发语言
@菜菜_达13 小时前
interact.js 前端拖拽插件
开发语言·前端·javascript
朝新_14 小时前
【实战】动态 SQL + 统一 Result + 登录校验:图书管理系统(下)
xml·java·数据库·sql·mybatis