先看一段代码

public class Test {public static void main(String[] args) {Integer integer = 127;Integer integer1 = 127;System.out.println((integer == integer1));Integer integer2 = 128;Integer integer3 = 128;System.out.println(integer2 == integer3);}
}

true
false

产生不一样的运行结果是Integer缓存,我们在给Integer赋值的时候,java编译器会将其翻译为Integer integer = Integer.valueOf(127)。Integer的valueOf()在-128~127之间时会使用Integer内部类IntegerCache,这时新创建的Integer对象中保存的是cache数组中某个元素的引用。所以integer == integer1为true,由于引用同一对象,地址相同。

    public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}private static class IntegerCache {static final int low = -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint h = 127;String integerCacheHighPropValue =sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");if (integerCacheHighPropValue != null) {try {int i = parseInt(integerCacheHighPropValue);i = Math.max(i, 127);// Maximum array size is Integer.MAX_VALUEh = Math.min(i, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high = h;cache = new Integer[(high - low) + 1];int j = low;for(int k = 0; k < cache.length; k++)cache[k] = new Integer(j++);// range [-128, 127] must be interned (JLS7 5.1.7)assert IntegerCache.high >= 127;}private IntegerCache() {}}

Integer初始化相关推荐

  1. java张int 和 Integer的区别

    值的存储 int 存储在栈中 Integer 对象的引用存储在栈空间中,对象的数据存储在堆空间中. 初始化 int 初始化值为0. Integer 初始化值为null. 传参 int 是值传递,栈中的 ...

  2. (8) 约瑟夫问题总结

    Josephus问题:假设有n个人排成一个圈,从第一个人开始报数,数到第m个人的时候这个人从圈里出列,然后继续在环里数到第m个人,让其出列,直到所有人都出列,求最后圈里剩下的那个人,在以前n个人里是第 ...

  3. 关于java中敏感词检测的一些总结

    之前项目里客户提出一个需求,需要对系统中使用文本转化成语音发送的功能进行敏感词检测,禁止用户提交有敏感词的语音.通过查询各方面资料,整理了大概几种方案: 项目启动时对载入敏感词库作为缓存(一个大map ...

  4. 第一个libgdx程序--仿别踩白块

    为什么80%的码农都做不了架构师?>>>    学libgdx有一段时间了,有一个星期了吧,边做边学,选的是别踩白块. libgdx总体思想可以用下面这张图来表示 总体可分为两层吧, ...

  5. Spring 使用 JSR303自定义校验注解+分组校验

    我们有这样一个需求,想要校验一个int类型的变量,校验它的值必须为我们所指定的值,且在修改状态分组时生效. @ListValue(vals = {0, 1}, groups = {UpdateStat ...

  6. react滑动切换tab动画效果_[React Native]react-native-scrollable-tab-view(入门篇)

    官方为我们提供的Tab控制器有两种: TabBarIOS,仅适用于IOS平台 ViewPagerAndroid,仅适用于Android平台(严格来讲并不算,因为我们还需要自己实现Tab) 如果我们需要 ...

  7. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲 ...

  8. Struts2 的Action 命名重复检测

    原因:在实际项目中发现 <action /> 的 name 重复时候,Struts2 并不会报错而是随意找一个去执行! 为了避免重复的情况发生,特地写了一个检测的程序: package b ...

  9. 根据经纬度求最近点的三种解法java实现

    文章目录 1. geoHash 2. kdTree算法求最近点 3.暴力法 4.利用elasticsearch或者lucene 1. geoHash 首先对经纬度点进行编码: 利用geoHash把经纬 ...

最新文章

  1. 使用SCSS高亮显示控件、聚焦位置
  2. es6 ik分词热更新MySQL_rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
  3. 读书笔记----javascript函数编程
  4. 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
  5. java 读取properties文件
  6. [vue] 实际工作中,你总结的vue最佳实践有哪些?
  7. 源码分析Thread
  8. 罗小黑用flash做的_中影星美好看罗小黑战记正式定档!
  9. 【CCF】201803-2 碰撞的小球
  10. SeismicUnix:cwpcmaps.c
  11. QVector、QList、QLinkedList 类
  12. linux下adb工具的安装目录下,adb工具包如何安装?怎么用?
  13. 【算法动画图解】:安利一款昨天发现的app
  14. 计算几何的模板(大神整理)
  15. 服务器数据拷贝到硬盘软件,硬盘对拷(拷贝) - 轻松搞定硬盘复制!
  16. java 数据抓取 动态获得cookies里变动的属性_Java爬取CSDN博客遇到setCookie问题
  17. 小巧的网页聊天工具提供-GOFLY在线客服系统
  18. 程序化交易高手的交易心得 分享~
  19. 嵌入式系统工程师的职位要求
  20. 无主之地计算机中丢失,”无主之地3“游戏存档丢失!解决方法汇总

热门文章

  1. 自己定义控件 播放GIF动画
  2. 三网融合试点方案定论 广电成最大赢家
  3. Hive:with as用法、问题和优化
  4. 嵌入式电子护照应用在自助机上的案例
  5. 北斗用户机用户接口协议(4.0 版本)
  6. 汇编语言实现冒泡法排序
  7. 复仇者斗鱼虽然上市,游戏直播的竞争却未迎来终局
  8. 使用关联规则分析股票数据--数据来自tushare大数据社区
  9. 微信小程序云开发记账本计算总金额,查询突破二十条数据的限制,条件查询、根据时间排序
  10. Android SoftAp支持 (一)