بولی/منطقی (Java Booleans)
بولی/منطقی (Booleans): دنیای سیاه و سفید جاوا ⚖️💡
در برنامهنویسی، خیلی وقتها نیاز داریم بدانیم که آیا یک عبارت "درست" است یا "غلط". برای این کار از نوع داده boolean استفاده میکنیم که فقط دو مقدار میگیرد: true یا false.
۱. تعریف متغیر بولی
{code_block('boolean isJavaFun = true;\nboolean isFishTasty = false;\nSystem.out.println(isJavaFun); // خروجی: true')}۲. عبارات بولی (Boolean Expressions) ⚖️
عبارت بولی عبارتی است که در نهایت یک مقدار منطقی تولید میکند. معمولاً با استفاده از عملگرهای مقایسهای (که در فصل قبل خواندیم) ساخته میشوند:
{code_block('int x = 10;\nint y = 9;\nSystem.out.println(x > y); // برمیگرداند true چون 10 بزرگتر از 9 است')}مقایسه برابری:
{code_block('int myAge = 25;\nint votingAge = 18;\nSystem.out.println(myAge >= votingAge); // خروجی: true')}۳. عملگرهای منطقی ترکیبی
ما میتوانیم چندین عبارت بولی را با هم ترکیب کنیم:
- && (AND): اگر هر دو طرفِ آن
trueباشند، نتیجه نهاییtrueاست. - || (OR): اگر حداقل یکی از طرفین
trueباشد، نتیجهtrueاست. - ! (NOT): مقدار را برعکس میکند (true -> false).
&& اگر سمت چپ غلط باشد، اصلاً سمت راست را چک نمیکند چون نتیجه در هر صورت غلط خواهد بود. این ویژگی باعث بهینهسازی سرعت میشود.
بخش تخصصی: کنترل جریان در پروژههای صنعتی 🛠️💎
در این بخش، به نکاتی میپردازیم که تفاوت یک کدآموز و یک مهندس نرمافزار حرفهای را مشخص میکنند.
۱. پیچیدگی زمانی (Time Complexity) در حلقهها
هر بار که حلقهای مینویسید، باید به تعداد تکرارهای آن فکر کنید. در جاوا، حلقههای تودرتو (Nested Loops) میتوانند به سرعت باعث کُند شدن برنامه شوند (مرتبه O(n²)). همیشه سعی کنید با استفاده از الگوریتمهای بهتر یا ساختارهایی مثل HashMap، نیاز به حلقههای تودرتو را به حداقل برسانید.
۲. بهینهسازی شرطها (Early Return)
یکی از اصولیترین روشها برای نوشتن کدهای تمیز، استفاده از Early Return است. به جای نوشتن شرطهای تو در تو (Nested Ifs)، ابتدا حالتهای خطا را چک کرده و از متد خارج شوید. این کار باعث میشود کد شما "تخت" (Flat) و خواناتر شود.
۳. امنیت و اعتبارسنجی (Validation)
کنترل جریان فقط برای منطق برنامه نیست؛ بلکه برای امنیت هم حیاتی است. همیشه ورودیهای کاربر را قبل از پردازش با استفاده از شرطها اعتبارسنجی کنید تا از بروز مشکلاتی مثل NullPointerException یا حملات تزریق کد جلوگیری شود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر بولی به نام canVote تعریف کنید که نتیجه مقایسه متغیر age (عدد 20) با عدد 18 (بزرگتر یا مساوی) باشد. سپس آن را چاپ کنید.
public class Main {
public static void main(String[] args) {
int age = 20;
boolean canVote = age >= 18;
System.out.println(canVote);
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.