【面试题】关于自动拆箱和装箱的

Pack 发布于 2020-01-10 16:03
阅读 261
收藏 0
分类:面试与就业

定义四个Integer变量,分别进行比较

面试题笔试部分的一道题

相关代码

public static void main(String[] args) {

Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;


    System.out.println(f1 == f2);

    System.out.println(f3 == f4);

}

}


理论上说两个结果应该是一致的,要么都是true,要么都是false,但是结果为第一个为true,第二个为false,为什么?

159
Pack
Pack

有一个规范叫JSL(Java Language Specification,java语言规范)对Integer的缓冲做了约束,规定其范围为:(-128-127)之间,在此区间的Integer变量比较的是值,如果超过此范围则创建新的对象,150>127,比较的是地址,所以f3==f4为false,==比较的是内存地址。如果使用f3.equals(f4)则为true

请先 登录 后评论