int类型和Integer类型的比较

int类型和Integer(理解基本数据类型和引用数据类型在内存中的存储方式)

一、int是基本数据类型,Integer是包装类,是继承了抽象类Number的引用数据类型;

二、int作为基本数据类型不能被赋值为null,Integer可以被赋值为null;

三、两个int类型的变量进行比较是值的比较;

       从java 5.0以后有了autoboxing功能,int类型的变量和Integer类型的变量进行比较时,Integer会进行自动拆箱,也就是说int类型和Integer类型可以直接用==进行值的比较;

      两个Integer类型的变量进行比较时,情况就稍微复杂。请看如下举例:

  1. Integer i1 = 100, i2 = 100, i3 = 150, i4 = 150;

  2. Integer i5 = new Integer(100);

  3. Integer i6 = new Integer(100);

  4. Integer i7 = new Integer("100");

  5. Integer i8 = Integer.parseInt("100");

  6. System.out.println(i1 == i2);//true

  7. System.out.println(i3 == i4);//false

  8. System.out.println(i1==i5);//false

  9. System.out.println(i6==i5);//false

  10. System.out.println(i1==i7);//false

  11. System.out.println(i8==i7);//false

  12. System.out.println(i1==i8);//true

  13. System.out.println(i5.equals(i6));//true

  14. System.out.println(i3.equals(i4));//true                                                                                                                                JVM中一个字节以下的数据([-128,127])在启动时自动加载进内存,所以除非用new Integer()创建的对象,否则都是同一个对象。以上举例中i5和i6直接用==进行比较时,实际上比较的是两个不同对象的地址,而不是比较的两个对象的值大小。如果要比较两者的大小要用Integer重写的Object的equals()方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值