关于Integer的"=="

转载 2015年11月19日 21:31:02
public static void main(String []args) {
		Integer a = 1;
		Integer b = 1;
		Integer c = 200;
		Integer d = 200;
		System.out.println(a == b);
		System.out.println(c == d);
	}


输出结果:

true

false

使用1或者1000赋值给Integer时,Java会翻译为Integer.valueof(xxx),附上源码,在-128到127之间的时候直接return IntegerCache.cahe[]了,因此出现了这个结果

    private static class IntegerCache {
        static final int high;
        static final Integer cache[];

        static {
            final int low = -128;

            // high value may be configured by property
            int h = 127;
            if (integerCacheHighPropValue != null) {
                // Use Long.decode here to avoid invoking methods that
                // require Integer's autoboxing cache to be initialized
                int i = Long.decode(integerCacheHighPropValue).intValue();
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - -low);
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
        }

        private IntegerCache() {}
    }

    /**
     * Returns a <tt>Integer</tt> instance representing the specified
     * <tt>int</tt> value.
     * If a new <tt>Integer</tt> instance is not required, this method
     * should generally be used in preference to the constructor
     * {@link #Integer(int)}, as this method is likely to yield
     * significantly better space and time performance by caching
     * frequently requested values.
     *
     * @param  i an <code>int</code> value.
     * @return a <tt>Integer</tt> instance representing <tt>i</tt>.
     * @since  1.5
     */
    public static Integer valueOf(int i) {
        if(i >= -128 && i <= IntegerCache.high)
            return IntegerCache.cache[i + 128];
        else
            return new Integer(i);
    }


相关文章推荐

integer-division

  • 2015年10月28日 14:34
  • 576B
  • 下载

integer formula

  • 2015年10月26日 17:45
  • 189KB
  • 下载

【Java】Arrays中之于int数组的方法,Integer数组与int数组

在java.util.*中,Arrays似乎很有用的样子,似乎用里面的方法就可以避免使用for循环要自己写对数组的查找、初始化、排序等方法了。 一、先说说Arrays中对整形数组真的有用的方法 1...
  • yongh701
  • yongh701
  • 2015年02月04日 16:46
  • 12835

Logic and Integer Programming

  • 2012年12月21日 10:37
  • 2.67MB
  • 下载

Integer和int的不同

  • 2013年04月22日 10:23
  • 11KB
  • 下载

打靶组合问题 打靶十次中90环的情况数 integer partition

所谓整数拆分即把整数分解成若干整数的和,相当于把n个无区别的球放到n个无标志的盒子,盒子允许空着,也允许放多于一个球。整数拆分成若干整数的和,办法不一,不同拆分法的总数叫做拆分数。...

integer multiplication

  • 2012年10月24日 16:35
  • 57KB
  • 下载

Java的Integer和int有什么区别

Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper cla...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Integer的"=="
举报原因:
原因补充:

(最多只允许输入30个字)