Object类学习

Object类是Java中所有类的根类,它定义了一些通用的属性和方法。以下是关于Object类的学习笔记:

1. equals()方法:


   - Object类中的equals()方法用于比较两个对象是否相等。
   - 默认情况下,equals()方法比较的是两个对象的引用是否相等,即内存地址是否相同。
   - 如果需要比较两个对象的内容是否相等,需要在具体的类中重写equals()方法,并根据对象的属性进行比较。

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    // 其他代码...
}

Person person1 = new Person("Alice", 20);
Person person2 = new Person("Alice", 20);
System.out.println(person1.equals(person2));  // true
 

2. hashCode()方法:


   - Object类中的hashCode()方法用于获取对象的哈希码值。
   - 哈希码值是根据对象的内部状态生成的一个整数,用于在哈希表等数据结构中快速查找对象。
   - 如果需要在自定义类中使用哈希表等数据结构,需要重写hashCode()方法,保证相等的对象具有相等的哈希码。

public class Person {
    private String name;
    private int age;
  
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
  
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Person person = new Person("Alice", 20);
System.out.println(person.hashCode());  // 根据name和age计算的hashCode值
 

3. toString()方法:


   - Object类中的toString()方法用于返回对象的字符串表示。
   - 默认情况下,toString()方法返回的是对象的类名和哈希码的字符串表示。
   - 在具体的类中重写toString()方法,可以返回对象的更有意义的字符串表示,便于调试和输出。

public class Person {
    private String name;
    private int age;
  
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
  
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Person person = new Person("Alice", 20);
System.out.println(person.toString());  // Person{name='Alice', age=20}
 

4. getClass()方法:


   - Object类中的getClass()方法用于返回对象的运行时类。
   - 运行时类是指在程序运行时创建的对象所属的类。
   - getClass()方法返回的是一个Class对象,可以通过Class对象获取类的信息,如类名、构造方法、字段、方法等。

Person person = new Person("Alice", 20);
Class<? extends Person> clazz = person.getClass();
System.out.println(clazz.getName());  // 输出:Person
 

5. finalize()方法:


   - Object类中的finalize()方法用于在对象被垃圾回收之前执行清理操作。
   - 默认情况下,finalize()方法什么也不做,可以在具体的类中重写finalize()方法,实现对象的清理逻辑。

public class Resource {
    // 构造方法和其他代码...
  
    @Override
    protected void finalize() throws Throwable {
        // 清理资源的逻辑代码
        // ...
        super.finalize();
    }
}

Resource resource = new Resource();
// 当resource对象被垃圾回收前,会调用finalize()方法进行资源的清理操作
 

6. clone()方法:


   - Object类中的clone()方法用于创建并返回当前对象的一个副本。
   - 默认情况下,clone()方法是浅拷贝,即只复制对象的字段值,不复制引用类型的对象。
   - 如果需要实现深拷贝,需要在具体的类中重写clone()方法,并对引用类型的字段进行递归复制。

public class Person implements Cloneable {
    private String name;
    private int age;
  
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
  
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

Person person1 = new Person("Alice", 20);
Person person2 = (Person) person1.clone();
System.out.println(person1 == person2);  // false
 

总结:


Object类是Java中所有类的父类,提供了一些通用的方法,如equals()、hashCode()、toString()、getClass()等。这些方法可以在具体的类中重写,以实现更具体的功能。熟练掌握Object类的相关方法,可以帮助我们更好地理解和使用Java中的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m5_jkl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值