java integer == integer返回 true 还是 false?

发布时间 2023-03-31 17:51:33作者: dm3344

理论:

IntegerCache 缓存
JAVA的Integer有IntegerCache会缓存-128~127之间的对象。
如:Integer x = 100,会调用Integer的valueOf()方法,这个方法就是返回一个Integer对象,但是在返回前,作了一个判断,判断要赋给对象的值是否在[-128,127]区间中,且IntegerCache(是Integer类的内部类,里面有一个Integer对象数组,用于存放已经存在的且范围在[-128,127]中的对象)中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新对象返回。

 

实践:

        Integer a=2;
            Integer b=2;
            System.out.println(a==b);
            Integer c=18;
            Integer d=18;
            System.out.println(c==d);
            Integer e=127;
            Integer f=127;
            System.out.println(e==f);
            Integer g=128;
            Integer h=128;
            System.out.println(g==h);
            Integer i=3;
            Integer j=3;
            System.out.println(i==j);

得出
true
true
true
false
true 

 

结论

在 [-128,127]区间中 进行匹配用==  是可以的,超过了就会false,可以改成  .equals()   就可以了