最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Object類(lèi)的常用方法小結(jié)

 更新時(shí)間:2025年01月28日 09:56:09   作者:冰糖心書(shū)房  
Java?Object?類(lèi)是所有類(lèi)的父類(lèi),位于?java.lang?包中,本文為大家整理了一些Object類(lèi)的常用方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

Java Object 類(lèi)是所有類(lèi)的父類(lèi),位于 java.lang 包中。所有 Java 類(lèi)默認(rèn)繼承 Object 類(lèi),因此它提供了一些基礎(chǔ)方法,這些方法在所有 Java 對(duì)象上都可以使用。

以下是 Object 類(lèi)中一些常用的方法及其詳細(xì)描述:

1. public boolean equals(Object obj)

  • 描述:判斷當(dāng)前對(duì)象與指定的對(duì)象是否相等。默認(rèn)情況下,它比較的是對(duì)象的內(nèi)存地址(即兩個(gè)對(duì)象是否是同一個(gè)實(shí)例)。但通??梢酝ㄟ^(guò)重寫(xiě)該方法來(lái)自定義對(duì)象比較的方式(如比較對(duì)象的內(nèi)容或字段值)。
  • 重寫(xiě):如果你需要比較對(duì)象的內(nèi)容而非引用,可以重寫(xiě)此方法。

示例:

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; // 類(lèi)型不同
        Person person = (Person) obj;
        return age == person.age && name.equals(person.name); // 比較屬性
    }

    public static void main(String[] args) {
        Person p1 = new Person("Alice", 25);
        Person p2 = new Person("Alice", 25);
        System.out.println(p1.equals(p2)); // 輸出: true
    }
}

2. public int hashCode()

描述:返回當(dāng)前對(duì)象的哈希碼。哈希碼用于提高集合框架(如 HashMapHashSet)中對(duì)象的查找效率。通常當(dāng)你重寫(xiě) equals 方法時(shí),也應(yīng)該重寫(xiě) hashCode 方法,保證兩個(gè)相等的對(duì)象具有相同的哈希碼。

示例:

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); // 使用屬性計(jì)算哈希碼
    }

    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        System.out.println(person.hashCode()); // 輸出哈希碼
    }
}

3. public String toString()

描述:返回當(dāng)前對(duì)象的字符串表示。默認(rèn)返回對(duì)象的類(lèi)名以及對(duì)象的哈希碼(例如:com.example.MyClass@1a2b3c4d)。通常我們會(huì)重寫(xiě)該方法,以便返回更加有意義的對(duì)象描述,如輸出對(duì)象的屬性值。

示例:

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 + "}";
    }

    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        System.out.println(person.toString()); // 輸出: Person{name='Alice', age=25}
    }
}

4. public final native Class<?> getClass()

  • 描述:返回一個(gè) Class 對(duì)象,表示當(dāng)前對(duì)象的類(lèi)類(lèi)型。通過(guò)這個(gè)方法,可以獲取對(duì)象的運(yùn)行時(shí)類(lèi)型信息。
  • 注意getClass() 方法是 final,不能被重寫(xiě)。

示例:

public class Main {
    public static void main(String[] args) {
        String str = "Hello";
        Class<?> clazz = str.getClass();
        System.out.println(clazz.getName()); // 輸出: java.lang.String
    }
}

5. public void notify()

描述:?jiǎn)拘言诋?dāng)前對(duì)象監(jiān)視器上等待的一個(gè)線程。如果有多個(gè)線程在等待,隨機(jī)喚醒一個(gè)。

使用場(chǎng)景:通常與 synchronized 關(guān)鍵字和 wait() 方法一起使用,用于線程間的通信。

6. public void notifyAll()

描述:?jiǎn)拘言诋?dāng)前對(duì)象監(jiān)視器上等待的所有線程。

使用場(chǎng)景:與 notify() 類(lèi)似,但它喚醒所有等待的線程。

7. public final void wait() throws InterruptedException

描述:使當(dāng)前線程進(jìn)入等待狀態(tài),直到其他線程調(diào)用 notify()notifyAll() 喚醒它。線程進(jìn)入等待狀態(tài)后,它會(huì)釋放持有的鎖。

使用場(chǎng)景:通常與 synchronized 關(guān)鍵字一起使用,用于線程間的協(xié)作。

8. public final void wait(long timeout) throws InterruptedException

描述:使當(dāng)前線程等待指定的時(shí)間,時(shí)間以毫秒為單位。該方法在指定時(shí)間內(nèi)等待,或者被其他線程調(diào)用 notify()notifyAll() 喚醒。

9. public final void wait(long timeout, int nanos) throws InterruptedException

描述:使當(dāng)前線程等待指定的時(shí)間。與前一個(gè)方法不同,這里提供了更精確的時(shí)間控制,可以通過(guò)納秒部分指定等待的額外時(shí)間。

示例:

public class WaitNotifyExample {
    public static void main(String[] args) throws InterruptedException {
        Object lock = new Object();

        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                try {
                    System.out.println("Thread 1 is waiting");
                    lock.wait(); // 釋放鎖并等待
                    System.out.println("Thread 1 is resumed");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        Thread t2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Thread 2 is notifying");
                lock.notify(); // 喚醒等待的線程
            }
        });

        t1.start();
        Thread.sleep(1000); // 確保 t1 先執(zhí)行
        t2.start();
    }
}

10. protected Object clone() throws CloneNotSupportedException

描述:創(chuàng)建并返回當(dāng)前對(duì)象的一個(gè)副本。這個(gè)方法是 protected,所以默認(rèn)不可訪問(wèn)。如果想讓某個(gè)類(lèi)的對(duì)象可克隆,必須實(shí)現(xiàn) Cloneable 接口并且重寫(xiě)此方法。如果類(lèi)沒(méi)有實(shí)現(xiàn) Cloneable 接口,調(diào)用該方法會(huì)拋出 CloneNotSupportedException。默認(rèn)實(shí)現(xiàn)是淺拷貝。

示例:

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();
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        Person p1 = new Person("Alice", 25);
        Person p2 = (Person) p1.clone();
        System.out.println(p1.equals(p2)); // 輸出: true
    }
}

11. public boolean instanceof(Object obj)

描述:檢查指定對(duì)象是否是當(dāng)前類(lèi)或其子類(lèi)的實(shí)例。用于類(lèi)型檢查。

12. public static void registerNatives()

描述:用于注冊(cè)本地方法。這個(gè)方法并不是很常用,通常在底層庫(kù)或 Java 虛擬機(jī)的實(shí)現(xiàn)中使用。

13. protected void finalize() throws Throwable

作用:

在垃圾回收器回收對(duì)象之前調(diào)用。可以用于釋放資源。

示例:

public class Resource {
    @Override
    protected void finalize() throws Throwable {
        System.out.println("Resource is being finalized");
        super.finalize();
    }

    public static void main(String[] args) {
        Resource resource = new Resource();
        resource = null; // 使對(duì)象成為垃圾
        System.gc(); // 觸發(fā)垃圾回收
    }
}

注意事項(xiàng):

finalize() 方法已被標(biāo)記為廢棄(Java 9+),不建議使用。推薦使用 try-with-resourcesCleaner 機(jī)制。

這些方法構(gòu)成了 Java 對(duì)象的基礎(chǔ)操作,尤其在多線程和集合操作中,equals()、hashCode()、notify()wait() 等方法非常常用。

以上就是Java中Object類(lèi)的常用方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Java Object類(lèi)常用方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

临清市| 盐亭县| 华池县| 云梦县| 伽师县| 泾源县| 灵丘县| 大名县| 海晏县| 宁城县| 渭源县| 敦化市| 溧阳市| 西充县| 瓮安县| 克拉玛依市| 琼结县| 怀来县| 汤原县| 肇东市| 松溪县| 永昌县| 德阳市| 宁远县| 游戏| 辛集市| 古丈县| 东乡县| 重庆市| 镇赉县| 富蕴县| 玛沁县| 高唐县| 庄浪县| 彭州市| 炎陵县| 佛冈县| 无极县| 安乡县| 沅陵县| 云龙县|