int与integer的区别

  • int是基本数据类型,而integer是int的包装类对象,简单的来说Integer类把int类型变成对象,以便于能够使用在基本数据类型不能使用的场合,例如需要往ArrayList,HashMap中存放数据的时候。而这种情况下系统会使用自动装箱拆箱来把int转化成integer对象。
public static void main(String[] args) {

        ArrayList a = new ArrayList();
        int aa = 11;
        Integer aaa = new Integer(aa);
        a.add(aa);    //在Java1.5之前没有拆箱装箱机制时,该用法是错的
        a.add(aaa);
    }
  • int在初始化的时候默认赋值为0,integer对象在初始化的时候默认赋值为null。
    由于自动装箱拆箱机制的存在,integer和int在一些情况下能够被自动转化。
public static void main(String[] args) {
        Integer a = 4;
        Integer b = 4;
        Integer c = 1111;
        Integer d = 1111;
        System.out.println(a == b);   //true
        System.out.println(c == d);   //false
    }

自动装箱拆箱使用了享元模式的设计,在一个byte范围(-128 ~127)内的值被装箱成integer对象的时候会在内存中被重新复用。
与此类似的是,当程序第一次使用某个字符串直接量的时候,Java会使用常量池来缓存该字符串直接量,如果程序后面的部分需要使用该字符串直接量的时候,Java会使用常量池中的字符串直接量。

public static void main(String[] args) {
        String a = "aaaa";
        String b = "aaaa";
        String c = "aa" + "aa";
        System.out.println(a == b);    //true
        System.out.println(a == c);    //true
    }

总结

如果需要数值进行加减乘除计算的时候,就需要使用int,这个时候使用integer对象也是可以的,但是会消耗系统资源。
如果是需要对象来处理,那就应该声明一个integer对象,或者使用Integer方法把int数值转化成integer对象来处理。

你可能感兴趣的:(int与integer的区别)