Mengapa Null Strings Bercantum dalam Java
Di Java, adalah mungkin untuk menggabungkan rentetan null tanpa menemui NullPointerException. Tingkah laku ini berlaku kerana cara Mesin Maya Java (JVM) mengendalikan rujukan nol:
Mengendalikan Rujukan Null
Mengikut Spesifikasi Bahasa Java (JLS), jika rujukan adalah nol, ia ditukar kepada rentetan "null" apabila melakukan penggabungan rentetan. Penukaran ini dilakukan secara automatik oleh JVM. Akibatnya, ungkapan s "hello" tidak menimbulkan pengecualian tetapi sebaliknya menilai kepada rentetan "nullhello", walaupun s pada mulanya batal.
Butiran Pelaksanaan
JVM mengendalikan rujukan nol semasa penggabungan dengan menjana bytecode yang menggunakan kelas StringBuilder. Pengkompil secara berkesan menterjemahkan operasi penggabungan kepada kod yang memulakan objek StringBuilder, menambahkan rentetan bukan nol ("hello" dalam kes ini) dan menukar hasilnya kepada objek Rentetan.
Kod di bawah menunjukkan bytecode setara yang pengkompil menjana:
String s = null; s = new StringBuilder(String.valueOf(s)).append("hello").toString();
Kod ini menggunakan kelas StringBuilder untuk mengendalikan rujukan null dengan selamat dan gabungkan rentetan.
Pertimbangan Pengoptimuman
Atas sebab prestasi, JVM boleh mengoptimumkan gabungan rentetan berulang dengan menggunakan kelas StringBuffer atau teknik yang serupa. Pengoptimuman ini mengelakkan mencipta objek Rentetan perantaraan yang tidak diperlukan semasa penilaian. Walau bagaimanapun, pelaksanaan tepat pengoptimuman ini mungkin berbeza-beza merentas penyusun yang berbeza.
Atas ialah kandungan terperinci Mengapa Java Tidak Membuang NullPointerException Apabila Menggabungkan Rentetan Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!