面试常问:包装类的比较

package basic;

import java.lang.Integer.IntegerCache;

public class Test {
	
	public static void main(String[] args) {
		Integer i1 = new Integer(97);
		Integer i2 = new Integer(97);
		System.out.println(i1.equals(i2));//true,下面是源代码
		/* public boolean equals(Object obj) {
		        if (obj instanceof Integer) {
		            return value == ((Integer)obj).intValue();
		        }
		        return false;
		    }*/
		System.out.println(i1 == i2);//false
		System.out.println("=========");
		
		/**
		 * -128~127是byte的取值范围,如果在这个范围,自动装箱不会创建新对象,在常量池中获取
		 * 否则就会创建新对象
		 */
		Integer i3 = 128;
		Integer i4 = 128;
		System.out.println(i3 == i4);//false
	/*	   public static Integer valueOf(int i) {
		        if (i >= IntegerCache.low && i <= IntegerCache.high)
		            return IntegerCache.cache[i + (-IntegerCache.low)];
		        return new Integer(i);
		    }*/
		System.out.println(i3.equals(i4));//true
		Integer i5 = 127;
		Integer i6 = 127;
		System.out.println(i5 == i6);//true

	}
}

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页