经典面试题:Integer c=100,d=100,c==d 一定是false吗?
点击关注公众号,实用技术文章及时了解
来源: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吗?相关推荐
- python经典面试题100例 面试宝典
人生苦短 我用 Python 芝麻开门! python 进阶 1 python 经典面试题 9 python 面试 100 例 21 python 面试题总结 101 python 进阶 1 PEP8 ...
- 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结
从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级 视频讲解如下,点击观看: 从100场腾讯面试中,抽出来经典面试题,腾讯技术职业等级丨C++后端开发丨Linux服务器开发丨面试经验丨面试总结丨 ...
- C语言——经典200道实例【基础例题100道——进阶例题100道】
目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!& ...
- 为什么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 ...
- 计算机应用基础的填空试题及答案,计算机应用基础试题及答案(填空题100道)2#严选材料...
<计算机应用基础试题及答案(填空题100道)2#严选材料>由会员分享,可在线阅读,更多相关<计算机应用基础试题及答案(填空题100道)2#严选材料(14页珍藏版)>请在人人文库 ...
- Raptor 经典例题 2 (冒泡法排序 100名同学拉成一圈)
冒泡法排序 运用 raptor 算法:相邻的两个数进行比较,根据大小交换,最大的数下沉到后面,最小的数上升一个位次 如果有n个数,需要比较n-1轮,每轮比较n-1次 P70-8.100名同学拉成一圈, ...
- C++经典面试题(最全,面中率最高)
C++经典面试题(最全,面中率最高) 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与fre ...
- java面试题_阿里大厂流出的数百道 Java 经典面试题
BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...
- Java经典面试题一
转载自 Java经典面试题一 题目一 面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1.抽象: 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽 ...
最新文章
- Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究
- 汉明距离—leetcode461
- 【计算机系统结构】第一周 课上笔记
- python mysql library popular_python之mysql入门详解(四)
- # 普通函数和箭头函数的区别
- 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
- RabbitMQ 集群搭建_02_rpm版本(linux环境)
- 群晖服务器性能测试,对群晖DS716+进行性能测试_群晖 DS716+_企业存储技术与评测-中关村在线...
- JDK下载与安装、 Eclipse下载与使用、 Tomcat下载与使用、 MySQL安装与使用
- mysql 视图 速度慢_mysql 视图查询速度慢
- 阿里云 centos 安装图形化界面
- 常见掌握类库与工具体系图 艾提拉总结 Atitit 文档资料处理重要类库与工具体系树 Configuration yml xml jsoup Net apache commons net
- SteamVR简介(Yanlz+Steam+VR+Unity+AR+MR+XR+立钻哥哥+==)
- 对称密钥、非对称密钥、数字签名、数字证书
- OpenCC的编译与多语言使用
- 【通識:人生哲學與幸福】老子人生觀巡禮
- 天使投资人刘峻:腾讯的七条命 |捕手志
- 零基础怎样制作自己的网页网站具体流程 - WordPress建站
- MacOS Xcode与Swift版本对应关系
- 18年6月六级翻译词汇
热门文章
- 真香无疑了!新iPhone抢断货,国内最受欢迎的颜色是它
- 暴风集团冯鑫被批捕:涉嫌对非国家工作人员行贿罪、职务侵占罪
- Mac终于有大动作了!WWDC 2019苹果将公布全新系统
- 华为海外版操作系统曝光?HUAWEI ARK OS现身
- 小伙工资取不出来 一查余额负999亿余元 网友:世界第一负翁?
- 三天花三万!跟董事长女儿相亲却被骗财?世纪佳缘致歉杭州小吴并承诺赔偿...
- 月薪2万程序员面试,被HR直面吐槽:毕业生能值这个数?
- 从测试流程角度,阿里P8大佬对产品质量的一些总结思考...
- android 动态地改变某控件的大小
- OpenGL(三)——OpenGL着色器基础