【java】int和integer区别

1.int是java中一种基本数据类型,Integer是int的包装类型(引用类型)

默认值:int i=0;       Integer i=null;

2.int实例不需要实例化即可使用,而Integer变量需要实例化才能使用,但是java中有自动装箱、拆箱的功能,所以Integer num=200;的写法实际上也是实例化;

3.int 变量和Integer变量的==比较:

(1)由于Integer 变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量用==比较永远不相等;new生成的是两个对象内存地址,==比较的是内存地址;

Integer num1=new Integer(100);

Integer num2=new Integer(100);

num1==num2;               //falsse

==比较的是地址

(2)Integer变量和int 变量比较时,只要两个变量的值是相等的,则结果为(包装类Integer和基本数据类型int比较时,java会自动拆箱为int,而后进行比较,实际上就变为两个int变量的比较)。

(3)非new生成的Integer变量和new Integer()生成的变量比较时,结果为false(非new生成的Integer 变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者正在内存中地址不同)

扫描二维码关注公众号,回复: 9278058 查看本文章

(4)对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较为true,否则为false,

因为java在编译非new生成的Integer对象的时候,实际上是调用了Integer类的静态方法 Integer.valueOf()。

public class Test2 {
    public static void main(String[] args) {
        int a=100;
        int b=100;
        Integer c=new Integer(100);
        Integer d=new Integer(100);
        Integer e=100;
        Integer f=100;
        System.out.println(a==b);
        System.out.println(c==d);
        System.out.println(e==f);
        System.out.println(a==c);
        System.out.println(a==e);
        System.out.println(c==e);
    }
}

发布了62 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43669007/article/details/102336209