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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值