Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan kelas Objek Java

Bagaimana untuk menggunakan kelas Objek Java

WBOY
WBOYke hadapan
2023-05-13 17:13:141405semak imbas

    1.kaedah yang sama

    == operator

    Operator perbandingan, yang boleh menentukan kedua-dua jenis asas dan jenis rujukan

    Jika anda menilai jenis asas, nilai sama ada nilai adalah sama

    Jika anda menilai jenis rujukan, nilai sama ada alamat adalah sama, iaitu sama ada ia adalah objek yang sama

    sama dengan

    ialah kaedah kelas objek dan hanya boleh menentukan jenis rujukan

    objek - sama dengan kod sumber:

    public boolean equals(Object obj) {
        return (this == obj);
    }

    Anda boleh melihat dengan jelas bahawa kaedah sama dalam kelas objek adalah untuk menentukan sama ada alamat objek adalah Sama (adakah objek yang sama)

    Walau bagaimanapun, kelas jenis data lain akan mengatasi kaedah yang sama, seperti mengatasi kelas String: ( tentukan sama ada nilai ​​​​bagi dua rentetan adalah sama)

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        return (anObject instanceof String aString)
                && (!COMPACT_STRINGS || this.coder == aString.coder)
                && StringLatin1.equals(value, aString.value);
    }

    Contoh:

    String str1 = new String("hello");
    String str2 = new String("hello");
    System.out.println(str1 == str2); // false
    System.out.println(str1.equals(str2)); // true

    2.hashCode

    Tingkatkan kecekapan bekas dengan struktur cincang

    Jika dua rujukan menghala ke objek yang sama, nilai cincang adalah pasti (tiada konflik) ) adalah sama, dan begitu juga sebaliknya

    Nilai cincang adalah berdasarkan alamat tetapi bukan alamat

    Demo:

    // hashCode
    A a = new A();
    A a1 = new A();
    A a2 = a;
    System.out.println(a.hashCode());
    System.out.println(a1.hashCode());
    System.out.println(a2.hashCode());
    ------------------------------

    Output:

    1324119927
    990368553
    1324119927

    Kod sumber:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    Contoh:

    // toString
    A a3 = new A("dahe",25,"安全服务工程师");
    System.out.println(a3.toString());

    Output:


    kelas.A@41629346

    PackageName.ClassName@Hex hashCode

    Sekarang Mari kita tulis semula kaedah toString (template) dalam kelas:

    @Override
    public String toString() {
        return "A{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                '}';
    }

    Jalankan kod di atas sekali lagi, dan sekarang output adalah seperti berikut:

    A{name='dahe', age=25, job='安全服务工程师'}

    Di samping itu, apabila kita mengeluarkan objek secara langsung, ia akan dipanggil terus secara lalai kaedah toString:

    System.out.println(a3);

    Output:

    A{name=' dahe', age=25, job='Security Service Engineer'}

    4.finalize

    Apabila objek dikitar semula, sistem secara automatik memanggil kaedah finalize objek. Subkelas boleh mengatasi kaedah ini dan melakukan beberapa operasi untuk melepaskan sumber

    Nota: Dalam JDK18. memuktamadkan tidak digunakan lagi. Walaupun ia boleh membantu kami mengeluarkan sumber asas sistem secara proaktif, sejujurnya, saya tidak pernah menggunakannya Java secara automatik menguruskan memori Menggunakannya akan membawa kepada risiko keselamatan sistem yang berpotensi , jadi ia dirancang untuk dikeluarkan.

    Instance:

    // finalize
    A a4 = new A("dh",33,"架构师");
    a4 = null; // 这是a4成为了垃圾,垃圾回收器就会回收对象
    // 在销毁对象之前,会调用对象的finalize方法
    // 程序员就可以在这个方法中写入自己的业务,释放资源

    Timpa kaedah pemuktamadkan:

    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁对象");
    }

    Selain itu, anda juga boleh menjalankan pengumpul sampah secara aktif:
    System.gc(); // 主动调用垃圾回收器

    Atas ialah kandungan terperinci Bagaimana untuk menggunakan kelas Objek Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam