Object类被称为普遍超类,所有类会自动继承Object。
Object里有很多方法,所有其他类都会继承。因为Object不是抽象类,其所有方法都有实现。
AP考试涉及的方法:toString和equals
如果直接调用默认toString方法,会输出该对象虚拟地址。要让toString有意义,必须在自己的方法里重载它。
示例:
public class OrderedPair {
private double x;
private double y;
//constructor and other methods
public OrderedPair (double x, double y) {
this.x = x;
this.y = y;
}
//return the OrderedPair in String form
public String toString() {
return "(" + x + " , " + y + ")";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
OrderedPair p = new OrderedPair(7, 10);
System.out.println(p);
}
}
在本例中,该类的toString方法覆盖了Object里的toString, 并定义其为输出(x , y)
注意:数组对象没有toString方法,因此想要输出数组唯一的方法就是遍历输出
equals方法
如果两个指针指代同一对象equals返回true,否则为false,例如
Date di = new Date("Jan", 14, 2001);
Date d2 = d1;
Date d3 = new Date("Jan", 14, 2001);
d1.equals(d2)会返回true,不过d1.equals(d3)会返回false,因为d1和d3指代不是同一对象。可以通过覆盖equals方法改变比较内容,不过AP考试中不会要求自己写代码覆盖equals
默认的equals方法实施和等号的作用一样,如Date的例子中(d1 == d2) 会返回true, (d1 == d3)会返回false。 不过尽量不要使用==比较对象。应该使用equals或者compareTo
HashCode是Object类里一个方法。hashCode返回的数值为该对象对应到哈希表中的地址。注意相同的对象hashCode一定相同,但是hashCode相同两对象可能不同。