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();
相关推荐
坐吃山猪9 小时前
Python-Hermite基函数
开发语言·python
摇滚侠9 小时前
《Java并发编程之美》第 2 章 并发编程的其他基础知识 阅读笔记 3
android·java·笔记
空~自由9 小时前
Python 正则 . * ? .* .*? (.*?) 通俗讲解
开发语言·python
墨子夕9 小时前
设计模式——Java × Python 双语言精讲 · 23 个经典模式 + 现代演进(第一篇)
java·python·设计模式
程序 代码狂人9 小时前
经典 SQL 面试题:连续登录问题的两种经典解法
java·开发语言·算法
weixin_BYSJ19879 小时前
【计算机毕设】房屋租赁系统02647
java·vue.js·spring boot·python·django·课程设计
VX_bysjlw98510 小时前
基于协同过滤的美食推荐系统的设计与实现32221-计算机毕设原创(免费领源码+带部署教程)
java·spring boot·redis·mysql·tomcat·maven·mybatis
星夜离尘5610 小时前
MATLAB 只剩批次摘要怎么合并方差:用 n、mean、M2 保留批间差异
开发语言·matlab
Misnice10 小时前
Python 的数据类型
java·windows·python