cari

Rumah  >  Soal Jawab  >  teks badan

Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?

if(id!=null&&id!="")
代码中经常这样写,空字符串跟null 都不用equals吗?

大家讲道理大家讲道理2890 hari yang lalu528

membalas semua(8)saya akan balas

  • 高洛峰

    高洛峰2017-04-17 17:53:37

    Pertama sekali, cara penulisan anda id!="" adalah salah. Anda harus menulisnya sebagai !id.equals("").
    Kedua, anda mesti faham maksud == dan equals

    1. == bermakna kedua-dua objek adalah rujukan kepada objek yang sama ==null bermakna objek ini bukan rujukan kepada mana-mana objek contoh dan objek itu kosong.

    2. equals ialah kaedah dalam kelas String, menunjukkan bahawa kandungan dua rentetan adalah sama.

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    Ia telah ditulis seperti ini sepanjang masa. Saya tertanya-tanya mengapa?

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:53:37

    Rentetan kosong sebenarnya memerlukan sama, jika tidak ralat akan berlaku. null boleh digunakan!=

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    Kod berikut, hasilnya palsu

    String d = new String("");
    System.out.println(""==d);

    Jadi equals mesti digunakan untuk menentukan rentetan kosong, seperti

    public static boolean isEmpty(String str) {
        return (str == null || "".equals(str));
    }

    Atau gunakan panjang untuk menentukan dan mengembangkan ke mana-mana CharSequence, seperti

    public static boolean isEmpty(final CharSequence cs) {
        return cs == null || cs.length() == 0;
    }

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 17:53:37

    1. Kaedah equals() wujud dalam kelas Object Semua kelas pembungkusan seperti Integer, Long, dll. telah melaksanakan semula fungsi ini jika anda menulis kelas sendiri dan menggunakannya kaedah class equals(), kesan kaedah ini bersamaan dengan "==", ia akan menentukan sama ada rujukan objek kedua-dua kelas adalah sama, dan dalam kelas pembalut equals akan menentukan sama ada kandungan objek adalah sama.
    2. Jika penghakiman ditulis sebagai if(id.equals("")&&id!=null), akan ada masalah NullPoint Jika nilai id adalah batal, pengecualian akan dilemparkan jika anda mengalih keluar panggilan ke kaedah equals().

    3.

    Terangkan program di atasstr1 == str2Apa yang membandingkan ialah sama ada kedua-dua rujukan adalah sama Rentetan yang kami isytiharkan akan disimpan dalam kolam pemalar rentetan Apabila str1, abc akan dimasukkan ke dalam kolam pemalar.str3 mula-mula akan menyemak sama ada terdapat rentetan abc dalam kolam malar Jika ya, ia akan dirujuk terus. Oleh kerana str2 terus mencipta objek baharu, alamat mestilah berbeza daripada str1. Kemudian mengapa ia sama selepas menggunakan kaedah internApabila kaedah
    dipanggil, jika kolam sudah mengandungi rentetan yang sama dengan objek Rentetan ini, rentetan dalam kolam akan dikembalikan masa, ia tidak akan menghasilkan rentetan baharu. Oleh kerana rentetan dalam kolam malar masih dirujuk, nilai pulangan intern masih str2.intern() == str1. true

    Itu sahaja. (●'◡'●)

    balas
    0
  • ringa_lee

    ringa_lee2017-04-17 17:53:37

    id==null bermakna id rujukan tidak menunjuk ke mana-mana objek, ia hanya rujukan; hanya objek tertentu dalam Java boleh memanggil kaedah (di sini adalah equals()). Jadi memanggil id==null apabila equals() akan membuang NullPointerException.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    Kod ini ditulis secara salah Ia tidak menggunakan sama untuk membandingkan rentetan kosong, dan terdapat banyak rentetan kosong, seperti tab, carriage return, dll. Tiada semakan yang boleh dibuat digunakan, seperti StingUtils dalam apache commons Kaedah .isBlank dan kaedah Guava's Strings.isNullOrEmpty boleh menentukan status rentetan nol dan kosong.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:53:37

    Anda masih perlu memahami perbezaan antara == dan sama, perbezaan antara "" dan nol
    == adalah untuk membandingkan sama ada nilainya sama atau sama ada alamat jenis rujukan adalah sama >equals adalah untuk membandingkan nilai alamat jenis rujukan, iaitu kandungan Adakah mereka sama

    balas
    0
  • Batalbalas