Rumah > Java > javaTutorial > Mengapa Pembangun Java Memilih Jenis Primitif Daripada Kelas Pembungkus?

Mengapa Pembangun Java Memilih Jenis Primitif Daripada Kelas Pembungkus?

Patricia Arquette
Lepaskan: 2024-12-07 06:43:15
asal
1030 orang telah melayarinya

Why Do Java Developers Prefer Primitive Types Over Wrapper Classes?

Mengapa Pembangun Java Masih Memilih Jenis Primitif

Walaupun pengenalan tinju dan unboxing dalam Java 5, pembangun terus menggunakan jenis primitif dalam kod mereka. Ini mungkin kelihatan berlawanan dengan intuitif memandangkan kemudahan tambahan yang ditawarkan oleh jenis kotak, tetapi terdapat beberapa faedah ketara untuk menggunakan primitif.

Pertimbangan Prestasi

Sorotan "Effective Java" Joshua Bloch potensi kesan prestasi menggunakan Long dan bukannya panjang dalam pengiraan mudah. Operasi tinju dan nyahbox melibatkan pengagihan dan penyerahan objek, yang boleh memperlahankan pelaksanaan kod. Seperti yang ditunjukkan dalam contoh yang diberikan, menggunakan jenis primitif boleh mengurangkan masa jalan dengan ketara.

Kesaksamaan Nilai

Satu lagi kelebihan jenis primitif ialah tanggapan asal mereka tentang kesamaan nilai. Operator == membandingkan nilai secara langsung, manakala kaedah .equals() pada jenis berkotak memerlukan langkah tambahan dan overhed. Ini boleh membawa kepada kod yang lebih ringkas dan cekap, terutamanya dalam senario kritikal prestasi.

Implikasi Caching

Di Java, nilai integer kecil ([-128; 127] ) dicache oleh JVM. Ini bermakna objek yang sama dikembalikan untuk nilai ini, yang boleh meningkatkan prestasi berbanding menggunakan jenis kotak. Walau bagaimanapun, untuk nilai di luar julat ini, objek baharu dicipta, berpotensi memperkenalkan objek yang tidak perlu di atas kepala.

Contoh: Teka-teki "Biziclop"

Gelagat .equals( ) untuk integer berkotak boleh mengelirukan. Pertimbangkan kod berikut:

class Biziclop {

    public static void main(String[] args) {
        System.out.println(new Integer(5) == new Integer(5)); // false
        System.out.println(new Integer(500) == new Integer(500)); // false
        System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); // true
        System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); // false
    }
}
Salin selepas log masuk

Mengapa baris (3) mengembalikan benar dan baris (4) mengembalikan palsu? Jawapannya terletak pada mekanisme caching. Nilai 5 dan -5 dicache oleh JVM, jadi dua contoh Integer(5) baharu merujuk kepada objek yang sama. Walau bagaimanapun, 500 tidak dicache, jadi dua contoh Integer(500) baharu ialah objek yang berbeza. Integer.valueOf(), sebaliknya, menggunakan cache tambahan yang merangkumi semua integer, memastikan bahawa untuk nilai dalam cache ini (biasanya semua integer dalam julat [-128; 127]), objek yang sama dikembalikan.

Atas ialah kandungan terperinci Mengapa Pembangun Java Memilih Jenis Primitif Daripada Kelas Pembungkus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan