Nilai nol atau nol dari string dinilai
Selama proses pengembangan, saya sering menemukan penggunaan yang salah berikut:
1. Penggunaan kesalahan 1:
if (name == "") {// lakukan sesuatu} 2. Penggunaan kesalahan 2:
if (name.equals ("")) {// lakukan sesuatu}
3. Penggunaan kesalahan tiga:
if (! name.equals ("")) {// lakukan sesuatu}
Mari kita jelaskan:
Penggunaan kesalahan 1 di atas adalah kesalahan yang paling mungkin dilakukan pemula dan paling tidak mungkin ditemukan, karena sintaksnya sendiri baik -baik saja, dan kompiler Java tidak melaporkan kesalahan saat menyusun. Namun, kondisi ini dapat menyebabkan bug dalam program selama runtime dan tidak akan pernah benar. Dengan kata lain, pernyataan dalam blok IF tidak akan pernah dieksekusi.
Penggunaan 2 dan penggunaan 3 yang disebutkan di atas ditulis, termasuk kesalahan yang banyak profisi java juga mudah dibuat. Mengapa itu salah? Mungkin Anda akan bingung.
Ya, tulisan mereka benar, tetapi ada kekurangan kondisi penilaian nol. Bayangkan saja, apa yang akan terjadi jika name = null? Konsekuensinya adalah bahwa program Anda akan melempar pengecualian NullpointerException, sistem akan ditangguhkan dan tidak lagi memberikan layanan normal.
Tentu saja, jika Anda telah membuat penilaian nol atas nama sebelumnya, pengecualiannya adalah.
Cara yang benar untuk menulisnya harus terlebih dahulu menambahkan kondisi nama! = NULL, seperti:
if (name! = null &&! name.equals ("")) {// lakukan sesuatu}atau
if (! "". Equals (name)) {// tulis "" di depannya, sehingga tidak peduli apakah namanya nol atau tidak, tidak akan ada kesalahan. // lakukan sesuatu}
Di sini, mari kita berikan contoh sederhana:
Testnullorempty.java
tes kelas publik {public static void main (string args []) {string value = null; testNullorEmpty (nilai); nilai = ""; testNullorEmpty (nilai); nilai = ""; testNullorEmpty (nilai); value = "Hello Me"; testNullorEmpty (nilai); } static void testNullorEmpty (nilai string) {if (value == null) {System.out.println ("Nilai adalah null"); } else if ("" .equals (value)) {System.out.println ("Nilai kosong tetapi tidak null"); } else {System.out.println ("Value is /" " + value +" /""); } if (value == "") {// penjaminan ng // jangan gunakan tulisan ini}}} Kompilasi Eksekusi:
c:/> javac testnullorempty.javac:/> java testnullorempty
Nilai null.value kosong tapi tidak null. Nilai adalah "" Nilai adalah "halo saya!"
Bandingkan alamat string yang sama
paket com; kelas publik A { / ** * @param args * / public static void main (string [] args) {string a = "hello"; String b = "dia"; String c = a.substring (0, 2); System.out.println (B.Equals (c)); // True System.out.println (b == c); // false string d = string baru ("hello"); System.out.println (D.Equals (a)); // true system.out.println (d == a); // false string e = new stringBuilder ("hello"). ToString (); System.out.println (E.Equals (a)); // true system.out.println (e == a); // false system.out.println (e.Equals (d)); // true system.out.println (e == d); // false string f = "hello"; System.out.println (f.Equals (a)); // true system.out.println (f == a); // true system.out.println (f == "hello"); // true system.out.println (f == "neraka"+"o"); // string true g = b+"llo"; System.out.println (g == f); // false string h = "he"+"llo"; System.out.println (h == f); // true}}Meringkaskan:
1. String dari yang baru adalah untuk mengubah kembali memori, string tidak dibagikan, dan beberapa yang baru tidak dibagikan.
2. Variabel string dan string statis yang disambung atau dicegat tidak dibagikan melalui fungsi string.
3. Ada dua situasi untuk string yang diperoleh dengan tanda plus.
A "he"+"llo" adalah string statis, yang dibagikan
B string a = "dia"; A+"LLO" bukan string statis, tidak dibagikan