Integer intA = 127;Integer intB = 127;Integer intC = 128;Integer intD = 128;System.out.println(intA == intB); //trueSystem.out.println(intC == intD); //false

Integer里弄了一个缓存,对于在 -128 ~ 127 之间的数值,会直接使用该缓存里的对象

也就是说 Integer intA = 127 或者 Integer intA = Integer.valueOf(127) ,最终 intA 得到的是Integer里的缓存对象

同理,intB也是获得该相同对象因此 进行 intA == intB 比较时,intA和intB引用的是同一个对象,因此就true

而对于128,已经超出缓存范围了,因此会生成一个新的Integer对象, intC和intD就引用不同的对象了,进行==比较,当然就false了.

但是如果new Integer() 则直接创建一个新的对象, 并不会到缓存中取.

        Integer i3 = new Integer(100);Integer i4 = new Integer(100);System.out.println("i3 == i4: "+(i3 == i4)); //false

Integer的cache是configurable的,  -Djava.lang.Integer.IntegerCache.high=1000可以改变cache的最大值, 最小值不能config固定为-128

        //java option中加入-Djava.lang.Integer.IntegerCache.high=1000Integer i3 = new Integer(500);Integer i4 = new Integer(500);System.out.println("i3 == i4: "+(i3 == i4)); //true

对于Short Long也有相同的缓存, 默认的也是缓存-128 ~ 127 之间的数值, 但其缓存不可以更改最大值.

封装类对象和基本数据类型==比较, 则会将封装类对象自动转成基本类型后比较,即值比较;

        Integer i4 = new Integer(5000);int i5 = 5000;System.out.println("i4 == i5: "+(i4 == i5)); //true

转载于:https://www.cnblogs.com/davidwang/archive/2013/01/22/2871893.html

Short, Integer, Long缓存相关推荐

  1. Java Integer的缓存策略

    Java5为Integer的操作引入了一个新的特性,用来节省内存和提高性能.整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用. 上面的规则默认适用于整数区间 -128 到 +127(这个整数 ...

  2. JAVA中Integer的缓存机制

    Integer的缓存机制: Integer是对小数据(-128~127)是有缓存的,再jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,如果初始化-128~127之间的数字,会 ...

  3. Integer的缓存机制

    ==的左右操作数如果是对象的话,那么比较的是引用的地址 Integer是对小数据(-128~127)是有缓存的,jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,这样,如果初始 ...

  4. 你真的理解 Integer 的缓存问题吗?| CSDN 博文精选

    作者 | 明明如月小角落 责编 | 屠敏 出品 | CSDN 博客 背景 下面给出一个例子,问输出的结果是多少: public class IntTest {public static void ma ...

  5. 包装类详解(装箱(包)、拆箱(包)、Integer类型缓存)

    在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型. 文章目录 一.基本数据类型和对应的包装类 二.装箱和拆箱 三.Inte ...

  6. Java 8 中 Byte、Short、Integer、Long内部缓存类的对比与源码分析

    这是<水煮 JDK 源码>系列 的第7篇文章,计划撰写100篇关于JDK源码相关的文章 对于基本数据类型的包装类 Byte.Short.Integer.Long ,其内部实现都有一个缓存类 ...

  7. java字面量和符号引用_java中字面量,常量和变量之间的区别(附:Integer缓存机制)...

    一.引子 在各种教科书和博客中这三者经常被引用,今天复习到内存区域,想起常量池中就是存着字面量和符号引用,其实这三者并不是只在java中才有,各个语言中都有类似的定义,所以做一下总结,以示区分. 二. ...

  8. Integer缓存问题分析

    Integer缓存问题分析 <阿里巴巴代码规约>中OOP规约部分,第七条:[强制]所有整型包装类对象之间值的比较,全部使用 equals 方法比较. 说明:对于 Integer var = ...

  9. Integer的自动缓存

    2019独角兽企业重金招聘Python工程师标准>>> Interger装箱有个自动缓存的概念 Integer a = 100;Integer b = 100;Integer c = ...

  10. Integer缓存池

    new Integer(127)和Integer.valueOf(127)是有区别的:理由如下! new Integer(127):每次都会创建一个新的对象. Integer.valueOf(127) ...

最新文章

  1. Singleton Pattern
  2. 黑马程序员----银行业务调度系统面试题
  3. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
  4. 01、python数据分析与机器学习实战——python数据分析处理库-Pandas
  5. 用了2年多快3年的老ASUS本子出了点小问题了
  6. HTML+CSS+JS实现 ❤️ 宇宙星球旋转动画特效❤️
  7. 2020中国零售品牌数字化转型白皮书
  8. IOS学习笔记02---语言发展概述,计算机语言简介.
  9. StarUML接口视图修改为类的形式
  10. Lesson 6: CronTrigger
  11. linux 统计文件字节和行数,Linux命令-统计文件中的字节数、字数、行数:wc
  12. 身份证到期,异地换领流程记录
  13. 【参赛作品22】华为openGauss数据库行存储源代码解析
  14. QT自定义Widget实现鼠标拖动窗口移动位置及鼠标拖拽窗口边缘窗口大小改变
  15. 禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法
  16. 用计算机研究甲骨文,基于图像识别技术的甲骨文数据系统
  17. 关于使用iframe登录超时,登录页内嵌在原页面
  18. mysql 收入_mysql 收支统计问题
  19. 【03月13日】建筑材料行业的估值高度排名
  20. python解决凯撒密码

热门文章

  1. python将txt读入矩阵_python读入txt数据,并转成矩阵
  2. 力扣-989 数组形式的整数加法
  3. PHP之SimpleXML函数
  4. Java实现分类文件拷贝2
  5. 向楚留香学习交朋友的办法
  6. 从大哥大到iPhone13,谈谈移动网络发展
  7. 游戏开发之类实现String及其迭代器(C++基础)
  8. HCIE Security PKI 备考笔记(幕布)
  9. ELK详解(十九)——Kibana绘图展示
  10. Bugku-Web-Cookies欺骗