📌 درک تفاوت بین عملگرهای بیتی و منطقی در شرطها در زبان جاوا
در جاوا، گاهی دو عملگر شبیه به هم دیده میشوند اما رفتار متفاوتی دارند. یکی از این موارد، تفاوت بین عملگرهای & و && یا | و || است. دانستن این تفاوت، برای جلوگیری از بروز خطاهای منطقی و افزایش کارایی کد بسیار ضروری است.
🧩 عملگرهای بیتی &
و |
عملگرهای & و | در حالت عادی روی بیتها کار میکنند. برای مثال:
int a = 5; // ۰۱۰۱
int b = 3; // ۰۰۱۱
System.out.println(a & b); // خروجی: ۱ (۰۰۰۱)
System.out.println(a | b); // خروجی: ۷ (۰۱۱۱)
اما وقتی این عملگرها در عبارات شرطی بولی (boolean) استفاده شوند، هر دو طرف شرط را بدون توجه به نتیجه، اجرا میکنند.
boolean result = checkA() & checkB(); // هر دو تابع اجرا میشوند
⚙️ عملگرهای منطقی شرطی
&&
و ||
(با ارزیابی کوتاه)در مقابل، عملگرهای && و || فقط در عبارات شرطی استفاده میشوند و از ارزیابی کوتاه پشتیبانی میکنند:
* در && اگر بخش اول false باشد، بخش دوم اصلاً اجرا نمیشود.
* در || اگر بخش اول true باشد، بخش دوم اجرا نمیشود.
boolean result = checkA() && checkB(); // اگر checkA() false بدهد، checkB() اجرا نمیشود
🔐 این ویژگی بهویژه برای جلوگیری از خطا (مثلاً
NullPointerException
) مفید است:
if (user != null && user.isActive()) {
// ایمن و مطمئن
}
🚨 مقایسه عملی:
فرض کنید توابعی دارید که در کنسول پیام چاپ میکنند:
public static boolean checkA() {
System.out.println("A Checked");
return false;
}
public static boolean checkB() {
System.out.println("B Checked");
return true;
}
اگر از checkA() & checkB() استفاده کنید، خروجی خواهد بود:
A Checked
B Checked
اما اگر از checkA() && checkB() استفاده کنید، خروجی فقط:
A Checked
خواهد بود.
🎯 جمعبندی:
* از && و || برای شرطها استفاده کنید که به ارزیابی کوتاه نیاز دارند.
* از & و | برای عملیات روی بیتها یا در شرایطی خاص که نیاز دارید هر دو طرف شرط همیشه اجرا شوند.
* دقت در انتخاب نوع عملگر شرطی، نقش مهمی در رفتار صحیح و کارآمد برنامه ایفا میکند.
#کاربر_مبتدی
🆔 @javapro_ir
🆔 @group_javapro
>>Click here to continue<<