1、Object类是所有类的父类。
(2)在Java中,所有的类都直接或者间接地继承Java.lang.Object类。
(3)Object类是所有Java类的祖先。
(4)在定义一个类时,没有使用extend是关键字,也就是没有显示地继承某个类,那么这个类直接
继承Object类。
(5)所有对象都继承Object类中的方法。
方法 | 说明 |
toString() | 返回当前对象本身的有关信息,返回字符串对象 |
equals() | 比较两个对象是否是同一个对象,若是,返回true反之返回false |
clone() | 生成当前对象的一个副本,并返回 |
hashCode() | 返回该对象的哈希代码值 |
getClass() | 获取当前对象所属类的信息,返回classdui对象 |
(6)Object类经常被子类重写的方法
2、toString()方法
没有toString()方法时,测试类运行结果是个地址值
public class Student {
private String name;
private int age;
public Student() {
super();//调用父类Object类中的无参构造方法
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
测试类:
package cn.bdqn.demo01;
public class Test {
public static void main(String[] args) {
Student stu1 = new Student("张三",20);
System.out.println(stu1);
//这是加toString方法的代码
System.out.println(stu1.toString());
}
}
运行结果:
使用对象stu1使用对象stu1调用Object类中的toString()输出的也是stu1在内存中的地址值
System.out.println(stu1.toString()); 既然Object类中的toString()方法不足以满足子类使用,我们就可以对这个toString()方法进行重写, 在重写方法中可以输出对象的属性信息.
在Student类中重写Object中的toString()方法。快捷键是shift+alt+s。然后点toString.可以选择。所以加上toString()运行结果。
建议所有子类都要写toString方法 。
3、equals类方法
Object类中的equals()方法用来比较两个对象是否是同一对象,若是,返回true,字符串对象的equals()方法用来比较两个字符串的值是否相等,java.lang.String类重写了Object类中的equals()方。
==比较基本数据类型的时候,比较的是基本数据类型的值
==比较引用数据类型的时候,比较的是引用数据类型的地址
还是用上面的代码在创建一个对象跟上一个对象的姓名和年龄完全相同,所以要在学生类中重写equals方法。
public class Student {
private String name;
private int age;
public Student() {
super();// 调用父类Object类里的无参构造方法
}
public Student(String name, int age) {
super();// 调用父类Object类里的无参构造方法
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
public boolean equals(Student stu) {
/*
* 在方法内将当前对象(this)的name属性和age属性与传递过来的stu对象的name属性和age属性进行比较
* name属性是String类型,对于String类型内容的比较使用equals(),从而说明在String类中重写了Object中的equals()
* age属性是int类型,比较的int类型的数据用==
*/
if(this.name.equals(stu.name)&&this.age==stu.age){
return true;
}
return false;
}
}
测试stu1与stu2是否为同一个对象。先创建两个相同的属性。
boolean result= stu1.equals(stu2);
System.out.println("stu1和stu2是同一对象:"+result);
equals方法的源码:
public boolean equals(Object obj) {
return (this == obj);
}