皇家赌场,无奖竞猜。“Java 中 Integer 1000==1000 为什么是false 而 100==100 为 true ???”

tech2023-09-08  94

Java 中 Integer 10001000 为什么是false, 而 100100 为 true ???

今天在划水中,朋友突然微信给我发来一个截图。问我输出结果是什么?

我:这也太简单了把 两个 false 啊。并且心里暗自得意。Integet 是对象 ==比较的是对象的引用是否相同。为自己的智商得意了一次。

直到朋友回复我微信,给我看了截图之后。

截图如下:

好了,到这里我开始怀疑自己白学Java了。于是去百度寻找答案,现做出整理。

我们知道,用==比较的是两个对象的引用地址。如果两个引用指向不同的对象,则它们是不相等的,即使它们的内容相同。 重点来了:敲黑板。 那么为什么100=100 为true? 答:这就是它有趣的地方了。如果你去看 Integer.java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象。 所以当我们在声明 Integer c = 100; 的时候内部是:Integer i = Integer.valueOf(100);

如果值的范围在-128到127之间,它就从返回实例。

so

Integer c=100; Integer d=100; System.err.println(c==d);#结果就是 true

学而不思则罔,思而不学则殆。

最新回复(0)