Java中1000==1000为false而100==100为true

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中1000==1000为false而100==100为true相关的知识,希望对你有一定的参考价值。

    public static void main(String[] args) {
        int  z1 = 0;
        int  z2 = 0;
        System.out.println(z1==z2);//TRUE
        
        Integer  a1 = -129;
        Integer  a2 = -129;
        System.out.println(a1==a2);// FALSE
        
        a1 = -128;
        a2 = -128;
        System.out.println(a1==a2);//TRUE
        a1 = 127;
        a2 = 127;
        System.out.println(a1==a2);//TRUE
        
        a1 = 128;
        a2 = 128;
        System.out.println(a1==a2);// FALSE
        // IntegerCache.java 缓存了从-128到127之间的所有的整数对象
        // 如果值的范围在-128到127之间,它就从高速缓存返回实例。
    }

 

import java.lang.reflect.Field;
public class Test318 {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        Class cache = Integer.class.getDeclaredClasses()[0];
        Field myCache = cache.getDeclaredField("cache"); 
        myCache.setAccessible(true);
        Integer[] newCache = (Integer[]) myCache.get(cache);
        newCache[132] = newCache[133]; 
        int a = 2;
        int b = a + a;
        System.out.printf("%d + %d = %d", a, a, b); //2+2=5
        }
}

 

以上是关于Java中1000==1000为false而100==100为true的主要内容,如果未能解决你的问题,请参考以下文章

为什么Java中1000==1000为false而100==100为true

为什么 Java 中“1000==1000”为false,而”100==100“为true?

为什么Java 两个Integer 中1000==1000为false而100==100为true?

奇怪的Java题:为什么1000 == 1000返回为False,而100 == 100会返回为True?

如何给女朋友解释为什么Java 中"1000==1000"为false,而"100==100"为true?

在java中为什么变量1000 = 1000 返回false,但是100=100返回true?