Java之数据类型缓存机制

2020-02-13  本文已影响0人  zhglance

问题描述:

public class IntegerTest {

    public static void main(String[] args) {

        Integer a = 5;
        Integer b = 5;

        System.out.println("a==b:" + (a==b));

        Integer c = 200;
        Integer d = 200;

        System.out.println("c==d:" + (c==d));

        Integer e = new Integer(5);
        Integer f = new Integer(5);

        System.out.println("e==f:" + (e==f));

    }
}

输出结果:

a==b:true
c==d:false
e==f:false

说明:

JVM对Byte、Short、Integer、Long、Character进行了缓存,缓存范围为 -128 到 127(Character范围为 0 到 127)。因此 ‘a==b:true’,但是** ‘c==d:false’,e和f使用了new,对象是分配到堆内存中的,e==f判断的是地址是否相同,因此‘e==f:false’**

备注:

只有Integer可以指定缓存的范围(-XX:AutoBoxCacheMax=size设置上届,下界不能指定,只能为-128),其它类都不行。

上一篇 下一篇

猜你喜欢

热点阅读