Manakala kelakuan pengendali logik boolean && (Bersyarat-Dan) dan || (Bersyarat-Atau) mungkin kelihatan biasa, terdapat rakan sejawat, & (Bitwise-Dan) dan | (Bitwise-Or), yang memerlukan perhatian. Pengendali bitwise ini, yang beroperasi pada tahap bit, menawarkan set peraturan yang berbeza.
Pertimbangkan contoh berikut untuk memahami fungsinya:
int a = 6; // Binary: 110 int b = 4; // Binary: 100 // Bitwise AND int c = a & b; // 110 // & 100 // ----- // 100 // Bitwise OR int d = a | b; // 110 // | 100 // ----- // 110 System.out.println(c); // Output: 4 System.out.println(d); // Output: 6
Dalam demonstrasi ini, operator bitwise melakukan operasi logik pada setiap bit yang sepadan bagi integer input, menghasilkan nilai yang diubah suai. Bitwise-AND (&) dan Bitwise-OR (|), tidak seperti rakan logik mereka, beroperasi pada tahap bit, dengan mengambil kira input sebagai jujukan 0s dan 1s.
Adalah penting untuk ambil perhatian bahawa && dan || pengendali mematuhi peraturan "litar pintas". Ini bermakna penilaian syarat kedua dilangkau apabila syarat pertama masing-masing menilai kepada palsu atau benar, berkesan menghalang sebarang kemungkinan ralat atau pengecualian.
Sebaliknya, & dan | jangan tunjukkan tingkah laku ini. Mereka meneliti dengan teliti setiap keadaan dalam klausa, menilai semua ungkapan yang disediakan tanpa mengira hasil daripada syarat sebelumnya. Perbezaan ini menjadi penting apabila salah satu ungkapan mungkin menimbulkan pengecualian, seperti yang dilihat dalam contoh ini:
int a = null; if ((a != null) & (a.something == 3)) { // Safe: 'a.something' will not be evaluated if 'a' is null } if ((a != null) & (a.something == 3)) { // Unsafe: 'a.something' will be evaluated even if 'a' is null, potentially raising an exception }
Dengan memahami perbezaan asas antara pengendali boolean ini, anda boleh memanfaatkan kuasanya dengan berkesan dalam kod anda, memastikan betul dan tingkah laku yang dioptimumkan.
Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara Operator Boolean `&&`/`||` dan Operator Bitwise `&`/`|` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!