首页 > 其他 > 详细

int和Integer的区别

时间:2019-03-26 21:17:55      阅读:168      评论:0      收藏:0      [点我收藏+]

int和Integer的区别

int和Integer的基本区别

  1. int是基本数据类型,Integer是int包装类。
  2. Integer变量必须实例化后才能使用,int可以直接使用
  3. Integer的默认值是null,int默认值是0
  4. Integer变量实际上是对象的引用,指向new的Integer对象,int是直接存储数据

Integer的自动装箱

一般我们生成对象都是Object o = new Objectz(),但是对于Integer,我们可以Integer a = 10;
因为Integer的自动装箱功能。
通过反编译工具我们可以看到class文件下是
Integer a = Integer.valueOf(10);
这就是基本数据类型的装箱。

Integer的自动拆箱

int b = a;反编译生成的class文件是int b = a.intVlaue();

深入对比

        Integer a = new Integer(10);
        Integer b = new Integer(10);
        System.out.println(a == b);
        System.out.println(a.equals(b));

结果前false,后true。
因为Integer变量是对Integer对象的引用,new了两个对象,显然内存地址不一样,引用不一样。
而Integer重写了equals方法,数值一样就返回true。

    public static void main(String[] args) {
        Integer a = 10;
        Integer b = 10;
        System.out.println(a == b);
        Integer c = 128;
        Integer d = 128;
        System.out.println(c == d);
    }

结果前true,后false
因为Integer自动装箱时对数值在-128到127的对象放入缓存中,第二次就直接取缓存中的数据而不会new。

    public static void main(String[] args) {
        Integer a = new Integer(10);
        int b = 10;
        System.out.println(a == b);
    }

结果为true
因为Integer类型和int比较时,会自动拆箱,化为基本类型数据比较。

触发自动拆箱

算术运算会触发自动拆箱

int和Integer的区别

原文:https://www.cnblogs.com/dearcabbage/p/10603460.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!