首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

为什么1000 == 1000返回False,而100 == 100会返回True?

System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到以下运行结果: false...true 我们知道,如果两个引用指向同一个对象,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。...因此,结果就会出现false。 这是非常有趣的地方。如果你查看Integer.java类,你会找到IntegerCache.java这个内部私有类,它为-128到127之间的所有整数对象提供缓存。...return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 如果值在 -128 到 127 之间,它就会返回该缓存的实例...这就是为什么这段代码的结果为true了: System.out.println(c == d); 现在你可能会问,为什么会为-128到127之间的所有整数设置缓存?

1.7K50

奇怪的Java题:为什么128 == 128返回false,而127 == 127会返回true?

奇怪的Java题:为什么128 == 128返回false,而127 == 127会返回true? 在回答这个问题之前,我们先来看看int和Integer的对比,一步步揭开问题的答案。...,其内存地址不同 (2) Integer变量和int变量比较时,只要两个变量的值是相等的,则结果为true。...Integer i = new Integer(100); int j = 100; System.out.print(i == j); //true 因为包装类Integer和基本数据类型int比较时...,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较 (3) 非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。...127 之内的数 Integer i = 127; Integer j = 127; System.out.println( i==j ); //true

2.2K31
领券