一、写在前面:

object类是所有类的跟类,也就是说,所有其他类都直接或者间接地继承自object类。object类位于java.lang包下,因此在java程序中不需要显示导入就可以直接使用,

二、构造方法:

构造 函数

描述

Object()

构造一个新对象。

 三、成员方法

Java 之 Object 类(常用类)_开发语言

 方法总结

修饰符和类型

方法

描述

int

hashCode()

返回对象的哈希代码值。

final Class<?>

getClass()

返回此类的运行时类。Object

String

toString()

返回对象的字符串表示形式。

boolean

 equals()

指示其他对象是否“等于”此对象。

1、hashCode():返回对象的哈希代码值。

@Test
    void hashCodeTest(){
        //创建对象
        Student student1 = new Student();
        Student student2 = new Student();
        //比较两个学生对象的hashcode值是否相同
        System.out.println("student1的哈希码:"+student1.hashCode());
        System.out.println("student2的哈希码:"+student2.hashCode());
        System.out.println("student1的哈希码:"+student1.hashCode());
        //
        // student1的哈希码:1232631679
        // student2的哈希码:2076611420
        // student1的哈希码:1232631679
    }

总结:不同对象的hashcode值是不相同的,相同的对象hashcode相同

  2.getClass() :可以返回调用此方法的对象的运行时类对象(反射)

@Test
    void getClassTest(){
        //创建对象
        Student student1 = new Student();
        Student student2 = new Student();

        //获取学生类的class对象
        Class aClass1 = student1.getClass();
        Class aClass2 = student2.getClass();

        System.out.println("aClass1" + aClass1);
        System.out.println("aClass2" + aClass2);


        // aClass1class com.zcm.Demo.Entity.Student
        // aClass2class com.zcm.Demo.Entity.Student
    }

总结:从结果来看,输出结果相同,相同的对象通过调用getClass()方法,得到的Class对象是相同的。

3.toString() :toString() 方法返回一个表示该对象的字符串。

@Test
    void toStringTest(){
        Student student = new Student();
        Student student1 = new Student();

        System.out.println("student对象的toString返回值"+ student.toString());
        System.out.println("student1对象的toString返回值"+ student1.toString());


        // student对象的toString返回值com.zcm.Demo.Entity.Student@32f5ecc4
        // student1对象的toString返回值com.zcm.Demo.Entity.Student@19bedeb8
    }

总结:toString() 方法默认打印的的确是“类的正名 + @ + 哈希码值的十六进制


在Java中,如果你没有在类中显式地重写toString()方法,那么它会默认返回一个由类名和对象的哈希码组成的字符串。因此,如果Student类没有重写toString()方法,那么student.toString()student1.toString()的返回值将是不同的,因为它们对应不同的对象,拥有不同的哈希码。如果你希望这两个对象的toString()返回值相同,你需要在Student类中重写toString()方法,以便返回你认为合适的字符串表示形式,比如学生的姓名、年龄等信息。

student 重写toString方法后

@Test
    void toStringTest(){
        Student student = new Student();
        Student student1 = new Student();

        System.out.println("student对象的toString返回值"+ student.toString());
        System.out.println("student1对象的toString返回值"+ student1.toString());


        // student对象的toString返回值Student{name='null', curriculum='null', age=null, sex=null}
        // student1对象的toString返回值Student{name='null', curriculum='null', age=null, sex=null}
    }

4.equals() :equals()方法默认比较的是两个对象的引用。

@Test
    void equalsTest(){
        Student stu = new Student();
        stu.setName("张三");

        Student stu2 = new Student();
        stu2.setName("李四");

        System.out.println("比较两个对象引用:" + stu.getName().equals(stu2.getName()));
        System.out.println("比较是否相同:" +"张三".equals(stu.getName()));


        // 比较两个对象:false
        // 比较是否相同:true
    }

总结:在 Java 中,`Object` 类中的 `equals()` 方法用于比较两个对象是否相等。默认情况下,`equals()` 方法比较的是对象的引用,即判断两个对象是否指向内存中的同一块地址。因此,如果没有在类中重写 `equals()` 方法,它将使用 `Object` 类中的默认实现,即比较对象的引用是否相同。但是,可以根据需要在子类中重写 `equals()` 方法,以便根据对象的内容来判断它们是否相等。通常情况下,重写 `equals()` 方法时需要同时重写 `hashCode()` 方法,以保证对象的一致性。