首页 > 试题广场 >

请阅读下面代码public class 

[单选题]
请阅读下面代码
public class HelloWorld {
    public static void main(String[] args) {
        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
    }
}
请问以下哪些判断会返回false()
  • f1 == f2
  • f3 == f4
  • f1.equals(100)
  • f1 == 100
因为Integer类型在-128-127范围之内是被缓存了的,也就是每个对象的内存地址是相同的,赋值就是直接在缓存中取值即可。超过这个范围,就会重新创建一个Integer对象,地址就不同的。
发表于 2019-12-21 21:19:33 回复(0)
这题是怎么个思路呢,在我看来,ab两个选项,如果是比较数值的话应该都返回TRUE,如果是比较内存地址,应该两个都是FALSE啊,为什么一个TRUE,一个FALSE 
下面是百度后的理解: ==判断的是内存地址,integer在赋予int数值-127到128之间的数可以直接调用cache,所以内存地址一样,超过这个范围就new了一个对象,所以内存地址就不一样了,返回了false
编辑于 2019-12-23 20:26:05 回复(2)
因为Integer类型在-128-127范围之内是被缓存了的,也就是每个对象的内存地址是相同的,赋值就是直接在缓存中取值即可。超过这个范围,就会重新创建一个Integer对象,地址就不同的。
发表于 2021-10-14 12:09:47 回复(0)