一、object类是所有类的父类
例:
class person extends Object{//person类继承了Objext类,但是在正常情况下,可以默认不写extends Object
public String name;
public int age;
}
class student extends person{
public String class;//student类继承了person类的属性。
}
二、toString()方法
toString()方法:把对象以字符串的形式打印,打印的是对象的内存地址。
object类中的toString()源码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
在打印对象的引用时,默认调用这个对象的toString()
public static void main(String[] args) {
Person p1=new Person("张三",18);
System.out.println(p1);
System.out.println(p1.toString());//这两个输出的结果是一样的,都是p1在内存中的地址。
}
如果打印对象时想要显示对象的基本信息,需要去对应类中重写toString(),因为子类对象调用的是子类中重写的方法。
例:
class person extends Object{//person类继承了Objext类,但是在正常情况下,可以默认不写extends Object
public String name;
public int age;
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
public class ObjectDemo extends Object{
public static void main(String[] args) {
Person p=new Person("张三",18);
System.out.println(p1.toString());//输出Person [name=张三 , age=18]
}
}
三、object类中的equals()方法
equals()方法:比较对象是否相等。
object类中的equals()源码:
public boolean equals(Object obj) {
return (this == obj);
}
根据源码可知,在object类中的equals()方法就是==。
当使用equals()时比较的还是这个对象的地址
public static void main(String[] args) {
Person p1=new Person("张三",18);
Person p2=new Person("张三",18);
System.out.println(p1==p2);
System.out.println(p1.equals(p2));//这两个输出的结果都是false,因为比较的是p1和p2在内存中的地址。
}
可以重写equal()方法来达到自己想要的效果
例:
class person extends Object{//person类继承了Objext类,但是在正常情况下,可以默认不写extends Object
public String name;
public int age;
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
return (this.id == ((Person)obj).id &&this.name.equals(((Person)obj).name)));
}
}
public class ObjectDemo extends Object{
public static void main(String[] args) {
Person p=new Person("张三",18);
Person p2=new Person("张三",18);
System.out.println(p1==p2);//false
System.out.println(p1.equals(p2));//true
}
}