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();
相关推荐
MacroZheng6 分钟前
换掉Navicat!一款集成AI功能的数据库管理工具,功能真心强大!
java·后端·mysql
是阿建吖!9 分钟前
【Redis】初识Redis(定义、特征、使用场景)
数据库·redis·缓存
橘子在努力9 分钟前
【橘子分布式】gRPC(番外篇-客户端重试机制)
java·分布式·rpc
五行缺弦22 分钟前
Java 笔记 serialVersionUID
java·开发语言·笔记
neoooo31 分钟前
《锁得住,才能活得久》——一篇讲透 Redisson 分布式锁的技术实录
java·spring boot·redis
花落人散处38 分钟前
SpringAI——整合MCP案例
java·后端
打码农的篮球43 分钟前
C++模板
开发语言·c++
小乖兽技术1 小时前
在 .NET 中使用 Base64 时容易踩的坑总结
开发语言·c#·.net
胡斌附体1 小时前
mybatis-plus逻辑删除配置
java·mybatis·mybatis-plus·逻辑删除
Lenyiin1 小时前
《LeetCode 热题 100》整整 100 题量大管饱题解套餐 中
java·c++·python·leetcode·面试·刷题·lenyiin