java基本类型与包装类

一个integer面试问题:

  • 下面这段代码的输出结果是什么?
    publicclassMain{
    publicstaticvoidmain(String[] args) {
    Integer i1 =100;
    Integer i2 =100;
    Integer i3 =200;
    Integer i4 =200;
    System.out.println(i1==i2);
    System.out.println(i3==i4);
    }
    }
    第一个是true,第二个是false;
    看下Integer的value0f源码就明白了:
    public static Integer valueOf(int i) {
    if(i >= -128 && i <= IntegerCache.high)
    return IntegerCache.cache[i + 128];
    else
    return new Integer(i);
    }
    代码中i的值范围是-128-+128之间。如果超出这个范围,会new一个新的对象,所以i=200时,时false。
  • 注意:把上面的Integer 换成Double,两个都是false,原因是二者的实现方法不同,在某个范围内的整型数值的个数是有限的,而浮点数却不是。具体原因建议看看源码的实现。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态...
    梦工厂阅读 58,494评论 38 276
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,219评论 18 399
  • 相关概念 常量池的定义常量池(constant pool):指的是在编译期被确定,并被保存在已编译的.class文...
    snoweek阅读 4,179评论 0 4
  • 遇见你之前,我很丑。对,很丑很丑,虽然我不怎么觉得。 即时我努力的工作,也被解雇了。我喜欢的条纹裤袜,也莫名的不卖...
    清默一阅读 1,774评论 0 0
  • 双十一啥都没买,最近创业后发现钱还是挺好赚的,要富起来 小区门口的饭店,每次都是这个位置,但是如今对面已经空了,空...
    小火人毛毛阅读 1,066评论 0 0