Menyingkap Kegigihan Jenis Primitif di Jawa
Walaupun pengenalan autoboxing dan unboxing di Java 5, primitif terus bertahan dalam banyak projek. Ini menimbulkan persoalan: mengapa pembangun masih mengutamakan jenis primitif berbanding rakan objek mereka, seperti java.lang.Integer.
Seperti yang digariskan oleh Joshua Bloch dalam karya seminalnya "Effective Java," penciptaan objek yang berlebihan boleh memudaratkan prestasi. Kod berikut menunjukkan ini:
public static void main(String[] args) { Long sum = 0L; for (long i = 0; i <= Integer.MAX_VALUE; i++) { sum += i; } System.out.println(sum); }
Kod ini, menggunakan objek Long, mengambil masa lebih kurang 43 saat untuk dilaksanakan. Walau bagaimanapun, menukar Long kepada jenis primitifnya, panjang, mengurangkan masa pelaksanaan kepada 6.8 saat sahaja.
Pertimbangan lain ialah ketiadaan kesamaan nilai asli di Jawa. Walaupun kesamaan objek dilakukan menggunakan kaedah equals(), jenis primitif menggunakan operator ==, yang menawarkan cara yang lebih ringkas dan cekap untuk menyemak kesamaan. Pertimbangkan contoh berikut:
class Biziclop { public static void main(String[] args) { System.out.println(new Integer(5) == new Integer(5)); System.out.println(new Integer(500) == new Integer(500)); System.out.println(Integer.valueOf(5) == Integer.valueOf(5)); System.out.println(Integer.valueOf(500) == Integer.valueOf(500)); } }
Output mendedahkan bahawa dalam julat [-128; 127], jenis primitif kembali benar untuk semakan kesaksamaan, disebabkan oleh caching JVM. Walau bagaimanapun, di luar julat ini, objek dicipta, membawa kepada keputusan palsu. Tingkah laku caching ini boleh memperkenalkan ketidakkonsistenan dalam semakan kesaksamaan, yang jenis primitif dielakkan.
Jadi, sementara autoboxing dan unboxing memberikan kemudahan, faedah prestasi dan semakan kesaksamaan yang cekap bagi jenis primitif terus menjadikannya pilihan yang berdaya maju dalam pembangunan Java , walaupun dalam projek yang memerlukan Java 5 atau lebih baru.
Atas ialah kandungan terperinci Mengapa Pembangun Java Masih Mengutamakan Jenis Primitif Berbanding Kelas Pembungkus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!