Long a = 4l; Long b = 4l; a == b //true
Long a = 128l; Long b = 128l; a == b //false
Jika nilai Long adalah antara [-127,128], tidak mengapa untuk menggunakan "==" untuk menentukan sama ada ia adalah sama bukan dalam julat ini, ia "==" tidak boleh digunakan, sebabnya adalah seperti yang dijelaskan dalam kod sumber:
public static Long valueOf(long l) { final int offset = 128; if (l >= -128 && l <= 127) { // will cache return LongCache.cache[(int)l + offset]; } return new Long(l); }
Jika ia bukan antara [-127,128], objek baharu akan dibuat , dan secara semula jadi "==" dua objek berbeza Hasilnya mestilah palsu.
Long a = 128l; Long b = 128l; a.longValue() == b.longValue() //true
Long a = 128l; Long b = 128l; a.equals(b);//true
Berikut ialah kod sumber kaedah ini:
public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }
Secara umumnya, "==" digunakan untuk membandingkan dua jenis data asas , Jenis panjang perbandingan jarang digunakan.
Walau bagaimanapun, semasa saya menulis projek baru-baru ini, saya menemui dua perbandingan jenis Long Pada masa itu, saya menggunakan sama dengan berganda Namun, apabila menyahpepijat, saya mendapati bahawa apabila kod itu dilaksanakan untuk membandingkan kedua-duanya Jenis panjang, ia tidak memasuki badan penghakiman, dan kemudian mencari isu berkaitan dalam talian Ia sebenarnya sangat mudah, tetapi jika anda tidak tahu, mudah untuk jatuh ke dalam perangkap.
Anda boleh membuat dua pembolehubah jenis Long memanggil kaedah ==longValue()== masing-masing.
Kod:
Long a=...; Long b=...; if (a.longValue() == b.longValue()) { ...; }
Sebenarnya, Long adalah sejenis kelas pembungkusan data java Perkara di atas adalah kes di mana kelas pembungkusan Long ditukar kepada jenis data asas berikut ialah pembongkaran kelas pembungkusan data lain Penukaran kepada jenis data asas:
Integer perlu ditukar kepada int, dan kaedah intValue() perlu dipanggil
Double perlu. ditukar kepada berganda, dan kaedah doubleValue() perlu dipanggil
Float untuk menukar Untuk float, anda perlu memanggil kaedah floatValue()
Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada dua objek Panjang adalah sama di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!