点击关注公众号,实用技术文章及时了解

来源:blog.csdn.net/qq_36680439/article/

details/78923769


相信大家在面试的过程中可能都遇到过这样一道题吧!

public static void main(String[] args) {Integer a = 1000,b = 1000;Integer c = 100,d = 100;System.out.println(a == b);System.out.println(c == d);}

相信大家得出的答案都是 false true

但是在这里我一定要说,这个答案不是绝对的  c==d 一定是true,但是a==b 却不一定就是false ,也有可能是true。

但是我得到的值是 true,true 如果不相信的同学或者抱有怀疑的同学请往下看!

我们首先要明白 通常情况下为什么答案会是 false,true。

Integer c = 1000 实际在内部做了Integer c = Integer.valueOf(100)的操作。我们来看一下Integer.class的源码

/*** Returns an {@code Integer} instance representing the specified* {@code int} value.  If a new {@code Integer} instance is not* required, this method should generally be used in preference to* the constructor {@link #Integer(int)}, as this method is likely* to yield significantly better space and time performance by* caching frequently requested values.** This method will always cache values in the range -128 to 127,* inclusive, and may cache other values outside of this range.** @param  i an {@code int} value.* @return an {@code Integer} instance representing {@code i}.* @since  1.5*/public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

从上面的代码中可以看到,当i >= IntegerCache.low && i <= IntegerCache.high的时候会从cache数组里直接取值,否则new一个新的Integer对象

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.class源码中 可以看出,low的默认值是-128,high的值与integerCacheHighPropValue有关,

String integerCacheHighPropValue =sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");

当我们未对vm中的Integercache进行设置的时候其莫认真是127,cache数组也就是从-128到127,这也就不难理解为什么

在开文时提到的经典面试题的结果会是false 和 true,之所以我后面强调不一定,就是因为当ntegerCacheHighPropValue不为null的时候取决于jvm中的设置,

在eclipse中我们可以做这样的操作:

这时候再来执行那段代码,你就会得到结果是 true和true,下次谁再问你这样的问题,可以大声的告诉他不一定,实力装13一波!

推荐

主流Java进阶技术(学习资料分享)

Java面试题宝典

加入Spring技术开发社区

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

经典面试题:Integer c=100,d=100,c==d 一定是false吗?相关推荐

  1. python经典面试题100例 面试宝典

    人生苦短 我用 Python 芝麻开门! python 进阶 1 python 经典面试题 9 python 面试 100 例 21 python 面试题总结 101 python 进阶 1 PEP8 ...

  2. 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结

    从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级 视频讲解如下,点击观看: 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结丨 ...

  3. C语言——经典200道实例【基础例题100道——进阶例题100道】

    目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!& ...

  4. 为什么Integer a=100,b=100时候a==b返回true,而Integer c=1000,d=1000时候c==d返回false

    为什么Integer a=100,b=100时候a==b返回true,而Integer c=1000,d=1000时候c==d返回false  Integer i =100实际在内部做了 Intege ...

  5. 计算机应用基础的填空试题及答案,计算机应用基础试题及答案(填空题100道)2#严选材料...

    <计算机应用基础试题及答案(填空题100道)2#严选材料>由会员分享,可在线阅读,更多相关<计算机应用基础试题及答案(填空题100道)2#严选材料(14页珍藏版)>请在人人文库 ...

  6. Raptor 经典例题 2 (冒泡法排序 100名同学拉成一圈)

    冒泡法排序 运用 raptor 算法:相邻的两个数进行比较,根据大小交换,最大的数下沉到后面,最小的数上升一个位次 如果有n个数,需要比较n-1轮,每轮比较n-1次 P70-8.100名同学拉成一圈, ...

  7. C++经典面试题(最全,面中率最高)

    C++经典面试题(最全,面中率最高) 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与fre ...

  8. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

  9. Java经典面试题一

    转载自  Java经典面试题一 题目一 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1.抽象: 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽 ...

最新文章

  1. Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究
  2. 汉明距离—leetcode461
  3. 【计算机系统结构】第一周 课上笔记
  4. python mysql library popular_python之mysql入门详解(四)
  5. # 普通函数和箭头函数的区别
  6. 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
  7. RabbitMQ 集群搭建_02_rpm版本(linux环境)
  8. 群晖服务器性能测试,对群晖DS716+进行性能测试_群晖 DS716+_企业存储技术与评测-中关村在线...
  9. JDK下载与安装、 Eclipse下载与使用、 Tomcat下载与使用、 MySQL安装与使用
  10. mysql 视图 速度慢_mysql 视图查询速度慢
  11. 阿里云 centos 安装图形化界面
  12. 常见掌握类库与工具体系图 艾提拉总结 Atitit 文档资料处理重要类库与工具体系树 Configuration yml xml jsoup  Net apache commons net
  13. SteamVR简介(Yanlz+Steam+VR+Unity+AR+MR+XR+立钻哥哥+==)
  14. 对称密钥、非对称密钥、数字签名、数字证书
  15. OpenCC的编译与多语言使用
  16. 【通識:人生哲學與幸福】老子人生觀巡禮
  17. 天使投资人刘峻:腾讯的七条命 |捕手志
  18. 零基础怎样制作自己的网页网站具体流程 - WordPress建站
  19. MacOS Xcode与Swift版本对应关系
  20. 18年6月六级翻译词汇

热门文章

  1. 真香无疑了!新iPhone抢断货,国内最受欢迎的颜色是它
  2. 暴风集团冯鑫被批捕:涉嫌对非国家工作人员行贿罪、职务侵占罪
  3. Mac终于有大动作了!WWDC 2019苹果将公布全新系统
  4. 华为海外版操作系统曝光?HUAWEI ARK OS现身
  5. 小伙工资取不出来 一查余额负999亿余元 网友:世界第一负翁?
  6. 三天花三万!跟董事长女儿相亲却被骗财?世纪佳缘致歉杭州小吴并承诺赔偿...
  7. 月薪2万程序员面试,被HR直面吐槽:毕业生能值这个数?
  8. 从测试流程角度,阿里P8大佬对产品质量的一些总结思考...
  9. android 动态地改变某控件的大小
  10. OpenGL(三)——OpenGL着色器基础