Integer自动拆箱、自动装箱

package com.tmt.test_code;


public class ZhuangChaiXiiangTest {
  public static void main(String[] args) {
   Integer i1=new Integer(128);
   int i2=128;
   Integer i3=new Integer(128);
   Integer i4=128;
   Integer i44=128;
   Integer i5=127;
   Integer i55=127;
   Long i6 = 127L;
   Long i66 = 127L;
   Long i7 = 128L;
   Long i77 = 128L;
   Integer a = 1;
   Integer b = 2;
   Long c = 3L;
   System.out.println("---new Integer(128)  ==  int 128 ---"+(i1==i2)); 

   System.out.println("---new Integer(128) == new Integer(128)---"+(i1==i3)); 

   System.out.println("---Integer 127  == Integer 127---"+(i5==i55));

   System.out.println("---Integer 128  == Integer 128---"+(i4==i44)); 

   System.out.println("---Long 127L == Long 127L--"+(i6==i66));
   System.out.println("---Long 128L == Long 128L--"+(i7==i77));

   System.out.println("3L.equals(integer 1 + integer 2)--"+c.equals(a+b));

  System.out.println("3L == (integer 1 + integer 2)--"+(c == (a+b))); 
  }

}

这个的运算结果是什么呢?

---new Integer(128)  ==  int 128 ---true
---new Integer(128) == new Integer(128)---false

---Integer 127  == Integer 127---true
---Integer 128  == Integer 128---false
---Long 127L == Long 127L--true
---Long 128L == Long 128L--false
3L.equals(integer 1 + integer 2)--false
3L == (integer 1 + integer 2)--true


大家也许要问原因了:
---new Integer(128)  ==  int 128 ---true

基本数据类型和对象间的“==”,对象会自动拆箱为基本数据类型再比较,比较的就是里面的值而不是地址

---new Integer(128) == new Integer(128)---false

对象间的“==”是比较两者在内存中的地址

 

 

---Integer 127  == Integer 127---true
---Integer 128  == Integer 128---false

---Long 127L == Long 127L--true
---Long 128L == Long 128L--false

Integer与Integer间的"=="比较,从jdk1.5开始,有“自动装箱”这么一个机制,在byte-128到127范围内(ps整型的八位二进制的表示的范围为-128到127),如果存在了一个值,再创建相同值的时候就不会重新创建,而是引用原来那个,但是超过byte范围还是会新建的对象


3L.equals(integer 1 + integer 2)--false

equals方法不处理类型间的转换


3L == (integer 1 + integer 2)--true

包装类的“==”运算在遇到算术运算的情况下会自动拆箱

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值