我是靠谱客的博主 殷勤时光,最近开发中收集的这篇文章主要介绍integer判断是否为空_面试题系列第3篇:Integer等号判断的内幕,你可能不知道?...,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
《Java面试题系列》:对面试题中经典内容进行深入挖掘,分析源码、汇总原理,形成公众号系列文章,面试与否均可提升技能。欢迎大家持续关注【程序新视界】。本篇为系列第3篇。
面试过程中关于Integer的比较“==”的问题内容层出不穷,但无论怎么变化,只要了解了其中的底层原理,马上就可以得出答案,再也不用死记硬背考题了。
《阿里巴巴Java开发手册》中有这样一项强制要求:
“所有整形包装类对象之间值的比较,全部使用equals方法比较。说明:对于Integer var= ?在-128到127范围内的赋值,Integer对象在IntegerCache.cache产生,会复用已有对象,这个区间的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。”
其实,如果将上面一段话背下来,那么你基本上已经可以答对百分之五十(跟猜的概率差不多)的面试题了。但如果想了解深层原理和剩下的百分之五十的问题,就咱们就继续往下看。
面试题
先来看一道常见的面试题,对照上面的结论,看看能够答对几项。下面代码中打印结果为true的有几项?
@Test
public void test2() {
Integer i1 = 64;
int i2 = 64;
Integer i3 = Integer.valueOf(64);
Integer i4 = new Integer(64);
Integer i5 = 256;
Integer i6 = Integer.valueOf(256);
System.out.println("A:" + (i1 == i2));
System.out.println("B:" + (i1 == i3));
System.out.println("C:" + (i3 == i4));
System.out.println("D:" + (i2 == i4));
System.out.println("E:" + (i3.equals(i4)));
System.out.println("F:" + (i5 == i6));
}
执行上面的程序,打印结果为:
A:true
B:true
C:false
D:true
E:true
F:false
只有C和F
最后
以上就是殷勤时光为你收集整理的integer判断是否为空_面试题系列第3篇:Integer等号判断的内幕,你可能不知道?...的全部内容,希望文章能够帮你解决integer判断是否为空_面试题系列第3篇:Integer等号判断的内幕,你可能不知道?...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复