前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Object类的常见方法总结

Object类的常见方法总结

原创
作者头像
代码小李
发布2025-01-30 18:16:14
发布2025-01-30 18:16:14
700
举报

Object 类是 Java 中所有类的父类,每个类都直接或间接地继承自 Object 类。Object 类中定义了一些常用的方法,这些方法在 Java 编程中非常有用。以下是 Object 类中的一些常见方法及其用途:

1. toString()

  • 功能:返回对象的字符串表示形式。
  • 用途:用于调试和日志记录,提供对象的可读性描述。
  • 示例
代码语言:java
复制
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", 30);
System.out.println(person.toString()); // 输出: Person{name='Alice', age=30}

2. equals(Object obj)

  • 功能:判断当前对象是否与指定对象相等。
  • 用途:用于比较两个对象的内容是否相同。
  • 示例
代码语言:java
复制
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 && name.equals(person.name);
    }
}

Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
System.out.println(person1.equals(person2)); // 输出: true

3. hashCode()

  • 功能:返回对象的哈希码值。
  • 用途:用于哈希表(如 HashMap)中的快速查找。
  • 示例
代码语言:java
复制
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() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }
}

Person person = new Person("Alice", 30);
System.out.println(person.hashCode()); // 输出: 哈希码值

4. clone()

  • 功能:创建并返回对象的一个副本。
  • 用途:用于对象的浅复制。
  • 示例
代码语言:java
复制
public class Person implements Cloneable {
    private String name;
    private int age;

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

Person person1 = new Person("Alice", 30);
try {
    Person person2 = (Person) person1.clone();
    System.out.println(person2); // 输出: Person@<hashcode>
} catch (CloneNotSupportedException e) {
    e.printStackTrace();
}

5. finalize()

  • 功能:对象被垃圾回收器回收前调用的方法。
  • 用途:用于释放资源或执行清理操作。
  • 示例
代码语言:java
复制
public class Person {
    private String name;
    private int age;

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

    @Override
    protected void finalize() throws Throwable {
        System.out.println("Finalizing " + name);
        super.finalize();
    }
}

Person person = new Person("Alice", 30);
person = null;
System.gc(); // 请求垃圾回收

6. getClass()

  • 功能:返回对象的运行时类。
  • 用途:用于获取对象的类信息。
  • 示例
代码语言:java
复制
public class Person {
    private String name;
    private int age;

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

Person person = new Person("Alice", 30);
System.out.println(person.getClass().getName()); // 输出: Person

7. wait(), notify(), notifyAll()

  • 功能:用于线程间的同步。
  • 用途wait() 使当前线程等待,notify() 唤醒一个等待的线程,notifyAll() 唤醒所有等待的线程。
  • 示例
代码语言:java
复制
public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
        notifyAll();
    }

    public synchronized void decrement() {
        while (count == 0) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        count--;
    }

    public synchronized int getCount() {
        return count;
    }
}

Counter counter = new Counter();
Thread t1 = new Thread(() -> {
    for (int i = 0; i < 10; i++) {
        counter.increment();
        System.out.println("Incremented to " + counter.getCount());
    }
});

Thread t2 = new Thread(() -> {
    for (int i = 0; i < 10; i++) {
        counter.decrement();
        System.out.println("Decremented to " + counter.getCount());
    }
});

t1.start();
t2.start();

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. toString()
  • 2. equals(Object obj)
  • 3. hashCode()
  • 4. clone()
  • 5. finalize()
  • 6. getClass()
  • 7. wait(), notify(), notifyAll()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档