Object:Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object的子类。
三个重要的方法toString,equals,hashCode
toString:
System.out.println(observObject);//不加toString
System.out.println(observObject.toString);//加toSting
equals:用于对象的比较
Object默认的是地址比较,因此我们自己创建类时重写一下equals方法,
==对比的是地址,
String str = "dsf";
String str1 = new String("dfs");
先判断长度是否相等,若等就一个一个对比,都相等就是true,否则为假
Syste.out.println(str.equals(str1));
hashCode:这一个类所产生的对象所具有的标识叫做哈希码
地址一样哈希码一样,地址不一样哈希码有可能相同
哈希算法:任何实现了不可逆的算法都是哈希算法
哈希不可逆能标识可重复
hashCode值代表了这个对象特征值的编码
public class ObservObject {
public ObservObject(int age, int height) {
this.age = age;
this.height = height;
}
public int hashCode() {
int code = 1;
code = (code + this.height*31)*code+31; code = (code + this.age*31)*code+31; return code;
}
}
public class Main {
public static void main(String[] args) {
ObservObject observObject = new ObservObject(3,4);
ObservObject oo = new ObservObject(3,4);
System.out.println(oo);
System.out.println(observObject);
//下面是输出结果,@后面是hashCode值
//ObservObject@97db
//ObservObject@97db
}
}
hashCode是用于底层判断
两个对象.equals相等了即为true,它们的hashCode一定相等,
如果hashCode相等,它们的.equals不一定为true