Memahami Perbezaan Antara '&' dan '&&' dalam Java
Di Jawa, operator '&' secara tradisinya dikaitkan dengan operasi bitwise pada integer. Walau bagaimanapun, baru-baru ini muncul bahawa pengendali ini juga boleh melaksanakan operasi boolean, mempersoalkannya dengan operator '&&'.
Walaupun kedua-dua '&' dan '&&' mengesahkan kebenaran operan boolean, mereka berbeza dalam logik penilaian mereka. '&&' melakukan penilaian malas, bermakna ia hanya menilai operan sebelah kanan (RHS) jika operan sebelah kiri (LHS) adalah benar. Ini memastikan bahawa jika operan LHS adalah palsu, operan RHS tidak dinilai, berpotensi mengelakkan pengiraan yang tidak perlu dan menghalang pengecualian daripada berlaku.
Sebaliknya, '&' menilai kedua-dua operan tanpa henti. Ini boleh membawa kepada pengecualian jika operan RHS tidak ditakrifkan dengan baik untuk nilai operan LHS tertentu. Pertimbangkan contoh:
if ((x != 0) & (1/x > 1)) { // ... }
Jika 'x' ialah 0, ungkapan ini akan membuang pengecualian apabila cuba menilai '1/x'. Untuk mengelakkan ini, gunakan '&&' sebaliknya:
if ((x != 0) && (1/x > 1)) { // ... }
Di sini, ia hanya akan meneruskan untuk menilai '1/x' jika 'x' bukan 0, sekali gus mengelakkan pengecualian.
Tambahan pula, '|', '|>' rakan sejawatan pengendali boolean berkelakuan serupa. '|>' berhenti menilai jika operan pertama menilai kepada benar kerana hasilnya akan sentiasa benar.
Memahami perbezaan halus antara '&' dan '&&' ini adalah penting untuk menulis kod Java yang cekap dan mantap yang mengelakkan ralat masa jalan yang disebabkan oleh penilaian pramatang.
Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara Operator `&` dan `&&` Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!