Object类是java中的所有类的父类(老祖宗)
如果一个类没有表明extends继承于哪个类的话,那么它就默认继承于Object类
Object类中的方法适用于所有子类
1.toString()
在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)
可以通过重写toString()方法表示出对象的属性
Dog d=newDog();
System.out.println(d);
com.imooc.Dog@1540e19d //前面是包名 后面是在包中的地址
但是 当我按 ait+insert 插入toString()之后
@Override
public String toString() {
return "Dog{"+
"age="+ age +
", color='"+ color +'\''+
'}';
}
Dog{age=39, color='red'}
public class Dog extends Animal {
int age=39;
String color="red";
@Override
public String toString() {
return"Dog{"+
"age="+age+
", color='"+color+'\''+
'}';
}
}
public classInitial {
public static voidmain(String[] args) {
Dog d=newDog();
d.eat();
d.name="ryan";
System.out.println(d);
}
}
2.equals()
比较的是对象的引用是否指向同一块内存地址(间接地指同一个对象)
Dog dog=new Dog();
而一般情况下比较两个对象时我们喜欢比较两个对象的值是否是一致,所以要重写。
注意类的对象和类对象的区别:
类的对象 obj.getClass() 姓名 年龄 身高 种族
类对象 obj 阿宝 20 182 熊族
···
public class Dog extends Animal {
int age=39;
String color="red";
@Override
public boolean equals(Object o) {
if (this == o) return true; //如果两个类一样返回真
if (o == null || getClass() != o.getClass()) return false; //如果类为空返回假。如果类对象不相同,返回假
Dog dog = (Dog) o; //如果到了这一步说明可以创建对象了 把o对象强制转换为dog类型
if (age != dog.age) return false; //正式开始比较他们的类的对象值
return color.equals(dog.color);
}
@Override
public int hashCode() {
int result = age;
result = 31 * result + color.hashCode();
return result;
}
}
public class Initial {
public static void main(String[] args) {
Dog d=new Dog();
Dog d2=new Dog();
if(d.equals(d2)){
System.out.println("两只狗相同");
}
else{
System.out.println("两只狗不同");
}
}
}
输出为 两只狗相同