您的位置:首页 > 编程语言 > Java开发

Integer与int的区别

2016-07-18 08:32 204 查看
最近遇到了一个Integer与int相等的判断时有些模糊,不知道怎么写。特地去查询了一下相关的知识。

int是基本类型之一,Integer是引用类型。也就是说int里面存的是一个实实在在的我们赋予的值,而Integer中存储的是我们赋予值得内存或者引用地址,还做了如下实验

public class IntegerTest {

    public static void main(String args[]){

        Integer a=new Integer(1);

        Integer b=new Integer(1);

        int c=1;

        Integer d=1;

        Integer f=1;

        if(a==b){

            System.out.println("a==b为真");

        }

        if(d==c){

            System.out.println("d==c为真");

        }

        if(d==f){

            System.out.println("d==f为真");

        }

        if(d==a){

            System.out.println("d==a为真");

        }

        if(a==c){

            System.out.println("a==c为真");

        }

    }    

}

运行的结果:

d==c为真

d==f为真

a==c为真

可以这样解释,a,b都是封装的数据类型,都使用了new来开辟了一块新的内存,其中存放的地址 ,类似于指针。当直接用==比较的应该直接比较的是内存地址,而不是实际指向的值。当使用equals方法时,比较a和b却为真,说明这个方法比较的是值。当Integer与int想比较的时候,比较的是值比较,这里涉及了Integer的自动拆箱的功能,d==c就为真了,a与c的比较也是这个道理。对于d与f的比较,这个涉及到对于常数,它有一个内存,或者说是缓存,当进行d和f的赋值方式时,会自动去内存中找,如果有,则直接把这块引用地址赋值给Integer类型的数据,这就是d==f的原因了。

补充一点:int的默认赋值为0,而Integer默认赋值为null(引用类型)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java基础知识