关于==号在integer类型中的应用

public static void print(int i) {
        
        int a = i;
        Integer b = i;
        Integer c = Integer.valueOf(i);
        Integer d = new Integer(i);
        Object e = i;
    }

1.a==b; //ture

a==c ;//true

a==d ;//true

a==e ;//true   当与int类型 比较时候 ,nteger会自动拆箱成int比较

2.i=200时,                       i==100时,  

b==c; //false                      b==c; //true

b==d; //false                     b==d; //false

b==e ; //false                    b==e ; //true

当使用直接赋值的时候( 如Integer b = 300;), 实际调用的就是 Integer的valueOf()方法。valueOf()方法返回一个integer对象,但是在返回前,会去进行一个判断,integer里面有个缓存对象数组,用以存放值在【-128,127】之间的对象,1.如果valueOf()传入的值不在区间【-128,127】,直接创建对象返回,2.如果在该区间但是不存在当前对象,则创建后存入对象数组中并返回,3.如果有,则直接返回引用。

 Integer d = new Integer(i);方法直接创建新对象并不会存入对象数组中。

 Object e = i;与integer比较的时候会自动转换成integer类型,等同于 Integer b = i;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值