Integer类型如何判断值相等呢?
下文笔者讲述Integer类型判断值相等的方法分享,如下所示
Integer类型判断值是否相等
使用integer对象的equals方法 即可判断integer值对象值是否相等例:Integer对象值判断的示例
public static void main(String[] args) { Integer a =127; Integer b = 127; Integer c = 128; Integer d = 128; Integer e = 129; Integer f = 129; System.out.println(a==b); //true System.out.println(c==d);//false System.out.println(e==f);//false System.out.println(a.equals(b));//true System.out.println(c.equals(d));//true System.out.println(e.equals(f));//true }
Integer之equals源码
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
Integer为什么127相等,128则不相等
因为 -128 ~ 127之间的数,并放入到JVM的缓存池中 这个Integer对象都指向同一个位置,所以,这个区间的值 使用 "==",返回true
-128~127的源码
/** * Cache to support the object identity semantics of autoboxing for values between * -128 and 127 (inclusive) as required by JLS. * * The cache is initialized on first usage. The size of the cache * may be controlled by the {@code -XX:AutoBoxCacheMax=<size>} option. * During VM initialization, java.lang.Integer.IntegerCache.high property * may be set and saved in the private system properties in the * sun.misc.VM class. */ private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { try { int i = parseInt(integerCacheHighPropValue); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - (-low) -1); } catch( NumberFormatException nfe) { // If the property cannot be parsed into an int, ignore it. } } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); // range [-128, 127] must be interned (JLS7 5.1.7) assert IntegerCache.high >= 127; } private IntegerCache() {} }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。