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

Bagaimana untuk menggunakan kelas Objek Java

WBOY
Lepaskan: 2023-05-13 17:13:14
ke hadapan
1492 orang telah melayarinya

    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);
    }
    Salin selepas log masuk

    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);
    }
    Salin selepas log masuk

    Contoh:

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

    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());
    ------------------------------
    Salin selepas log masuk

    Output:

    1324119927
    990368553
    1324119927

    <🎜 Mengembalikan perwakilan rentetan objek

    Kod sumber:

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

    Contoh:

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

    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=&#39;" + name + &#39;\&#39;&#39; +
                ", age=" + age +
                ", job=&#39;" + job + &#39;\&#39;&#39; +
                &#39;}&#39;;
    }
    Salin selepas log masuk

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

    A{name=&#39;dahe&#39;, age=25, job=&#39;安全服务工程师&#39;}
    Salin selepas log masuk

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

    System.out.println(a3);
    Salin selepas log masuk

    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方法
    // 程序员就可以在这个方法中写入自己的业务,释放资源
    Salin selepas log masuk

    Timpa kaedah pemuktamadkan:

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

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

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

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan