Java Integer比较

代码

View Code
结果:

复制代码
Integer a = 127;
Integer b = 127;
a == b ? true
2020-04-13 22:30:47.162 INFO 4492 — [ restartedMain] com.example.newdemo.IntegerCompare :
Integer c = 128;
Integer d = 128;
c == d ? false
2020-04-13 22:30:47.162 INFO 4492 — [ restartedMain] com.example.newdemo.IntegerCompare :
Integer e = 127;
Integer f = new Integer(127);
e == f ? false
2020-04-13 22:30:47.162 INFO 4492 — [ restartedMain] com.example.newdemo.IntegerCompare :
Integer g = new Integer(127);
Integer h = new Integer(127);
g == h ? false
2020-04-13 22:30:47.162 INFO 4492 — [ restartedMain] com.example.newdemo.IntegerCompare :
Integer i = 128;
int j = 128;
i == j ? true
复制代码
结论:
=比较的是引用
equal比较的是integer实际的值

第一个相等,第二个不相等,是因为Interger.valueOf内部做了缓存(-127,127)。

a, b相同的引用。
c,d超过了缓存的范围直接new,产生不同的引用,所以不相等。

Integer e = 127;

Integer f = new Integer(127);

e从缓存中读取。f则是新的对象,用=判断时候是两个不同的引用,所以不相等。

Integer g = new Integer(127);
Integer h = new Integer(127);
g和h都是新的引用。

Integer i = 128;
int j = 128;
把装箱的 Integer 和基本类型 int 比较,前者会先拆箱再比较,比较的肯定是数值而不是引用,因此返回 true
龙华大道1号http://www.kinghill.cn/LongHuaDaDao1Hao/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值