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();
相关推荐
青山木4 分钟前
Hot 100 --- 搜索二维矩阵
java·算法·leetcode·矩阵
CoderYanger20 分钟前
Java EE:9.JVM(课件内容-上篇)
java·jvm·程序人生·面试·职场和发展·java-ee·程序员创富
xiaoqiMikko24 分钟前
Spring Cloud Config 这个 CVE 的补丁,Maven Central 上根本没有
java·spring boot
多弗朗皮卡丘24 分钟前
C语言梦开始的地方3
c语言·开发语言
残月心殇 请珍惜枸29 分钟前
.NET陷阱之五:奇怪的OutOfMemoryException——大对象堆引起的问题与对策
java·jvm·.net
用户31268748772030 分钟前
Spring Boot 配置体系到底怎么加载的?从 application.yml 到 @Conditional 的全链路拆解
java·spring boot
Bonnie_121536 分钟前
08-JUC并发基础-AQS-补充共享锁
java·开发语言
qq_4017004137 分钟前
Qt 程序启动太乱?重新设计你的 Application 生命周期
开发语言·qt
Zane199438 分钟前
线程池入门:7 大核心参数与 4 种拒绝策略
java·后端
Zldaisy3d43 分钟前
连续纤维增材制造的机翼已飞上天,复材打印在低空飞行器上还需翻过几道坎?
java·前端·数据库