我是靠谱客的博主 殷勤时光,最近开发中收集的这篇文章主要介绍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等号判断的内幕,你可能不知道?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部