Rumah >Java >javaTutorial >Mengapa Tidak Menggabungkan Rentetan Null dalam Java Membuang NullPointerException?
Di Java, menggabungkan rentetan nol dengan rentetan lain tidak membuang NullPointerException, seperti yang mungkin jangkakan. Sebaliknya, hasilnya ialah rentetan baharu dengan "null" didahulukan.
Mengikut Spesifikasi Bahasa Java (JLS ):
"Jika rujukan [kepada null string] adalah nol, ia ditukar kepada rentetan 'null' (empat aksara ASCII n, u, l, l)."
Oleh itu, rentetan nol ditukar secara automatik kepada "null " sebelum penyatuan berlaku.
Pengkompil mengoptimumkan penggabungan rentetan untuk meningkatkan prestasi. Ia melakukan ini dengan menggunakan objek StringBuilder untuk mengumpul hasil penggabungan.
Apabila menemui rentetan nol:
Pertimbangkan kod berikut :
String s = null; s = s + "hello"; System.out.println(s); // prints "nullhello"
Pengkompil mengoptimumkan kod ini kepada yang berikut setara:
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
Memandangkan s adalah nol, String.valueOf(s) mengembalikan "null", yang kemudiannya dilampirkan pada StringBuilder dan ditukar kepada rentetan.
Atas ialah kandungan terperinci Mengapa Tidak Menggabungkan Rentetan Null dalam Java Membuang NullPointerException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!