Integer类的源码解读

1. 继承关系

Integer继承自抽象类Number,实现了Comparable<>接口.

2. IntegerCache内部类

他还有一个IntegerCache内部类,里面存了-128到127的Integer对象;
当我们用int数据给Integer型对象引用赋值时,采用自动装箱的办法,调用valueOf()方法;

public static Integer valueOf(int i) {
   
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

可以看到,如果int型值在-128至127之间时,直接返回的cache中的对象;如果不在这个范围则直接返回一个新的对象。也就是说,对于在[-128,127]内的数,无论它赋给了多少个对象引用,这些引用都指向的同一个对象。因此对于

Integer i1, i2, i3, i4;
i1 = 100;
i2 = 100;
i3 = 100;
i4 = 100;

它们四个是完全相同的,都指向同一个对象,即使用==判断,返回的是true;而对于

Integer i1, i2, i3, i4;
i1 = 1000;
i2 = 1000;
i3 = 1000;
i4 = 1000;

它们四个只是值相等,但是是不同的对象,使用==判断,返回的false,若要只比较值,则使用i1.equals(i2)

3. hashCode()方法

public static int hashCode(int value) {
   
	return value;
}

可以看到,它的hash值就是它自己。

4. 比较

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值