Object – 所有的类的父类 (8中基本数据类型没有父类。引用类型有父类。)
—toString方法
—equals方法
—hashCode方法
toString方法:输出对象就调用toString方法,将对象的成员变量的数据值输出。
例子:
//自定义重写规则: 以实际需要的字符串内容作为参考。
public String toString1() {
//return super.toString(); // 调用父类的toString方法。
}
// 重写hashCode: – 保证equals结果相等的对象的hashCode值一致,equals不等的对象的hashCode值不一样。
// hashCode得到的是一个int类型的数据 。
例子:
public int hashCode() {
int resutl = sex*age + ((name == null) ? 0 : name.hashCode());
return resutl;
}
equals方法:Object中的equals方法判断是两个对象的地址是否相等。
obj.equals(obj2) – 判断两个对象的内容是否相等。
例子:
public static void main(String[] args) {
Point p1 = new Point();
Point p2 = new Point();
System.out.println(p1==p2); // false -- 两个对象的引用地址不一样。
System.out.println(p1==p1); // true -- 自己和自己肯定相等
p2 = p1;
System.out.println(p1==p2); // true -- 指向同一个对象的地址
Point p3 = new Point();
// ** Point不重写equals方法,那么调用父类的equals方法。
System.out.println("equals:" + p1.equals(p3)); // -- false -- p1和p3地址不同。
System.out.println("equals:" + p1.equals(p2)); // -- true -- p1和p2地址同
}
重写equals方法:
// 两个Cell对象等的规则: x和y各自相等,说明是相等的格子
例子:
public boolean equals(Object obj) {
// 1. 判断是否是自己: 是自己就直接true.
if(this == obj) {
return true;
}
// 2. 判断传入的比较对象是否为null: 直接false
if(obj == null) {
return false;
}
// 3. 判断传入的比较对象的类型是否为同种类型: 不是同种类型就false。 是同一种类型就做类型转换,然后比较x,y数据值是否相等。
// -- instanceof , 做引用的实际类型的判断
if(obj instanceof Cell) { // -- 判断obj是否为Cell类型, 如果是,则可以强转。
Cell c = (Cell)obj;
if(this.x == c .x && this.y == c.y) {
return true;
}
}