旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java中int与integer的区分【JAVA教程】,java,int,integer,区别

作者:搜教程发布时间:2019-12-02分类:JAVA教程浏览:34评论:0


导读:一、java基础数据范例及其封装类java数据范例有基础数据范例和援用数据范例,为了轻易将基础数据范例看成对象处置惩罚,java引入了基础数据范例相对应的封装类,如in...

一、java基础数据范例及其封装类

java数据范例有基础数据范例和援用数据范例,为了轻易将基础数据范例看成对象处置惩罚,java引入了基础数据范例相对应的封装类,如int封装类是Integer。

在线教授教养视频分享:java教授教养视频

二、java自动拆箱和自动装箱

1、自动装箱

自动装箱实在就是将基础数据范例转换为援用数据范例(对象)

2、自动拆箱

自动拆箱实在就是将援用数据范例转化为基础数据范例

代码以下:

    public static void main(String[] args) {
        Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1);

        int b = a - 1;//对象不能直接举行盘算,所以这里有自动拆箱的操纵,将a对象转换成基础数据范例,然后-1
        System.out.println(a);
        System.out.println(b);
    }

打印效果:

1
0

三、int和Interger的区分

从上面我们就能够看出int和Interger的区分:

int是基础数据范例,Integer是援用数据范例;

int默认值是0,Integer默认值是null;

int范例直接存储数值,Integer须要实例化对象,指向对象的地点。

说到这,是不是是以为就这么完事了,实在它们之间另有一些细节方面的区分:以下

    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);

        int c = 1;
        int d = 1;

        Integer e = 1;
        Integer f = 1;
        
        Integer g = 130;
        Integer h = 130;
        
        Integer i = new Integer(130);
        int j = 130;
    }

1:a == b 吗? 空话,一定不相称。两个new出来的对象地点不一样。

2:c == d 吗? 这个也是空话,都是基础数据范例的值一定相称。

3:如今的症结问题是 e == f 吗? g == h 吗?

答案是:e == f; g != h。

为何会涌现这类状况?由于ava在举行编译时 Integer g = 130会被编译成 Integer.valueOf(130) ,这个能够经由过程反编译class文件看到。而经由过程Integer源码能够得出,Integer.valueOf() 要领会在数值-128~127之间会对Integer举行缓存,不会再从新new一个,所以 e==f ;当数值二大于127或许小于-128的时刻则会从新new一个,所以g != h 。

Integer的valueOf要领以下:

    public static Integer valueOf(int i) {
         //IntegerCache.low == -128  ;IntegerCache.high == 127
         //当数值大于-128小于127时,举行缓存;不然从新new一个。
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

4:c == e 吗, i == j 吗?

答案都是相称的。由于封装类和基础数据范例举行比较的时刻,java会自动拆箱,然后比较数值是不是相称。

总结:

1、都是封装类,都是new出来的,一定不相称。由于对象的内存地点不一样。

2、都是封装类,都不是new出来的,假如值在-128~127之间,那就相称,不然不相称。

3、假如是封装类和基础范例举行比较,只需数值相称那就相称,不然就不相称。由于封装类和基础数据范例举行比较的时刻会有一个自动拆箱操纵。

4、都是基础数据范例,假如数值相称,那就相称;不然不相称。

想相识更多相干教程请接见:java入门

以上就是java中int与integer的区分的细致内容,更多请关注ki4网别的相干文章!

标签:javaintinteger区别


欢迎 发表评论: