equals
private final int value;
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
private final double value;
public boolean equals(Object obj) {
return (obj instanceof Double)
&& (doubleToLongBits(((Double)obj).value) ==
doubleToLongBits(value));
}
参数是Object类型,传基本数据类型会先装箱。整形字面量封装成Integer,浮点型封装成Double。
都是先判断你是不是相同的类型,不是就直接返回false了。
不是int和double类型的包装类和基本数据类型比较直接返回false了
只有int和Integer 、double和Double会接着比较值。
compareTo
//Integer的比较方法
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);
}
//Double的比较方法
public int compareTo(Double anotherDouble) {
return Double.compare(value, anotherDouble.value);
}
//Float的比较方法
public int compareTo(Float anotherFloat) {
return Float.compare(value, anotherFloat.value);
}
比较只能和同类型的比较。不能和不同类型的比较
Float的compareTo传double就会报错
==比较大小
不同包装类==比较不会自动拆箱。
不同的引用地址永远都是false
正确的包装类比较
每个包装类都有将数据装换为byte、short、int、long、float、double的方法。
他们都继承自Number类。先转换成同类型再比较。