Integer a=100;Integer b=100; 
JDK1.5 编译通过

解决方案 »

  1.   

    1.5 里面 肯定是true 了类似String一样 
    对于这样直接赋值的Integer 当值的范围在 [-128,127] 时候 会不生成新的对象 直接把缓存中的对对象拿来用 Integer a=128;Integer b=128这样的话就是false了可以看看Integer的源代码 里面有实现
      

  2.   

    再问下 Integer a=100 应该是哪个方法
      

  3.   

    找到了    public static Integer valueOf(String s) throws NumberFormatException
        {
    return new Integer(parseInt(s, 10));
        }    private static class IntegerCache {
    private IntegerCache(){} static final Integer cache[] = new Integer[-(-128) + 127 + 1]; static {
        for(int i = 0; i < cache.length; i++)
    cache[i] = new Integer(i - 128);
    }
        }    /**
         * 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) {
    final int offset = 128;
    if (i >= -128 && i <= 127) { // must cache 
        return IntegerCache.cache[i + offset];
    }
            return new Integer(i);
        }