装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
装箱:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
它会首先判断i的大小:如果i小于-128或者大于等于128,就创建一个Integer对象,否则执行IntegerCache.cache[i + (-IntegerCache.low)];
拆箱:
public int intValue() { return value; }
Double类型来说,因为它在这个范围内个数是无限的
Double、Floa 里面的做法很直接,就是直接创建一个对象,所以每次创建的对象都不一样
Boolean 可以看到它并没有创建对象,因为在内部已经提前创建好两个对象
先判断类型 在判断值
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }