Short, Integer, Long缓存
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缓存相关推荐
- Java Integer的缓存策略
Java5为Integer的操作引入了一个新的特性,用来节省内存和提高性能.整型对象在内部实现中通过使用相同的对象引用实现了缓存和重用. 上面的规则默认适用于整数区间 -128 到 +127(这个整数 ...
- JAVA中Integer的缓存机制
Integer的缓存机制: Integer是对小数据(-128~127)是有缓存的,再jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,如果初始化-128~127之间的数字,会 ...
- Integer的缓存机制
==的左右操作数如果是对象的话,那么比较的是引用的地址 Integer是对小数据(-128~127)是有缓存的,jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,这样,如果初始 ...
- 你真的理解 Integer 的缓存问题吗?| CSDN 博文精选
作者 | 明明如月小角落 责编 | 屠敏 出品 | CSDN 博客 背景 下面给出一个例子,问输出的结果是多少: public class IntTest {public static void ma ...
- 包装类详解(装箱(包)、拆箱(包)、Integer类型缓存)
在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型. 文章目录 一.基本数据类型和对应的包装类 二.装箱和拆箱 三.Inte ...
- Java 8 中 Byte、Short、Integer、Long内部缓存类的对比与源码分析
这是<水煮 JDK 源码>系列 的第7篇文章,计划撰写100篇关于JDK源码相关的文章 对于基本数据类型的包装类 Byte.Short.Integer.Long ,其内部实现都有一个缓存类 ...
- java字面量和符号引用_java中字面量,常量和变量之间的区别(附:Integer缓存机制)...
一.引子 在各种教科书和博客中这三者经常被引用,今天复习到内存区域,想起常量池中就是存着字面量和符号引用,其实这三者并不是只在java中才有,各个语言中都有类似的定义,所以做一下总结,以示区分. 二. ...
- Integer缓存问题分析
Integer缓存问题分析 <阿里巴巴代码规约>中OOP规约部分,第七条:[强制]所有整型包装类对象之间值的比较,全部使用 equals 方法比较. 说明:对于 Integer var = ...
- Integer的自动缓存
2019独角兽企业重金招聘Python工程师标准>>> Interger装箱有个自动缓存的概念 Integer a = 100;Integer b = 100;Integer c = ...
- Integer缓存池
new Integer(127)和Integer.valueOf(127)是有区别的:理由如下! new Integer(127):每次都会创建一个新的对象. Integer.valueOf(127) ...
最新文章
- Singleton Pattern
- 黑马程序员----银行业务调度系统面试题
- [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
- 01、python数据分析与机器学习实战——python数据分析处理库-Pandas
- 用了2年多快3年的老ASUS本子出了点小问题了
- HTML+CSS+JS实现 ❤️ 宇宙星球旋转动画特效❤️
- 2020中国零售品牌数字化转型白皮书
- IOS学习笔记02---语言发展概述,计算机语言简介.
- StarUML接口视图修改为类的形式
- Lesson 6: CronTrigger
- linux 统计文件字节和行数,Linux命令-统计文件中的字节数、字数、行数:wc
- 身份证到期,异地换领流程记录
- 【参赛作品22】华为openGauss数据库行存储源代码解析
- QT自定义Widget实现鼠标拖动窗口移动位置及鼠标拖拽窗口边缘窗口大小改变
- 禾瑞亚USB接口电阻触摸屏控制卡QNX 6.5 RTOS操作系统x86架构驱动安装与配置方法
- 用计算机研究甲骨文,基于图像识别技术的甲骨文数据系统
- 关于使用iframe登录超时,登录页内嵌在原页面
- mysql 收入_mysql 收支统计问题
- 【03月13日】建筑材料行业的估值高度排名
- python解决凯撒密码