目录
前言
本篇博文是我在学习Object类中方法的一些感悟和自己的总结。目前只列举了to string, equal两个方法,后续将进行持续更新。
Object类
Object类是什么?简单的说,Object类是所有类的超类(父类)。
Object类也像一个容器,可以用Object类型的变量引用任何类型的变量。
Object obj = new EmployeeC'Harry Hacker", 35000);
当然, Object 类型的变量只能用于作为各种值的通用持有者。要想对其中的内容进行具体的操作, 还需要清楚对象的原始类型, 并进行相应的类型转换:
Employee e = (Employee) obj ;
Object类方法
Object类的方法有很多,如下图所示。

To String()方法
1.To String()方法是什么?
一般来说,toString方法会返回一个字符串,以“文本形式”表示当前对象。 它的返回值是以字符串的形式表示对象。
2.To String()方法的实际例子
package demo1;
//定义了一个Student类,并给出了其姓名,年纪和分数的初始值
class Student{
String name = "张三";
int age = 18;
double score = 81.0;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
public class Test1 {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student);
}
}上述代码很简单,我定义了一个Student类,并给出了其姓名,年纪和分数的初始值。并实现了to string()方法。在main函数就能打印改对象,事实上是以文本的形式表示该对象。其结果如下

3. to String()的实现过程
接下来我们就具体讲讲to String()的实现过程,怎么他就调用了子类的to String()方法呢? 且看下图分解。

我们可以看到,在main()函数中,把new Student()的引用赋值给了student,并且传给了System.out.println()。
在println()函数中,用Obejcet 类 x接收了student对象,接着函数value of()有用Obejct类 obj接收了student对象。事实上,Obejct类 obj接收了student对象的过程发生了向上转型,子类Student重写了父类Object类中的to string()方法,最后obj.toString()的过程用父类调用了子类的toString()对象,发生了动态绑定的过程。 因此,最后实现了打印子类对象的过程。
equals方法
1. equals方法是什么
Object 类中的 equals 方法用于检测一个对象是否等于另外一个对象。其在object类中的定义如下:
public boolean equals(Object obj) { return (this == obj); }可以看到,在 Object 类中,这 个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用, 它们一定是相等的。
注意
在Java中,==进行比较时:
- a.如果==左右两侧是基本类型变量,比较的是变量中值是否相同
- b.如果==左右两侧是引用类型变量,比较的是引用变量地址是否相同
- c.如果要比较对象中内容,必须重写Object中的equals方法,因为equals方法默认也是按照地址比较的:
2. equals方法的使用实例(比较对象中内容)
package demo1;
//定义了一个Student类,并给出了其姓名,年纪和分数的初始值
class Student{
String name = "张三";
@Override
public boolean equals(Object obj) { // 重写了equals方法。
if(obj == null) {
return false;
}
//指向的是同一个对象
if(this == obj) {
return true;
}
if(! (obj instanceof Student)) {
return false;
}
Student student = (Student ) obj;
if (this.name.equals(student.name)){
return true;
} else {
return false;
}
}
}
public class Test1 {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
System.out.println(student1.equals(student2));
}
}
hashCode方法(后期补充)
1. hashCode 是什么?
所谓hashCode()这个方法,他帮我算了一个具体的对象位置。他返回的是一个对象的哈希值。