Java/הרחבה על משתנה בוליאני, ערך null

משתנה בוליאני הוא משתנה מיוחד, המסוגל לקבל ערך של "אמת" (True) או "שקר" (False) בלבד.

הסבר לשימוש עריכה

כאשר משתמשים בערך בוליאני, אפשר להציב בו רק ערך של אמת או שקר, שבג'אווה מיוצגים על ידי המילים השמורות true ו-false (שימו לב - אותיות קטנות).

דוגמה:

boolean t = true;
boolean f = false;

למרות מוגבלותם, משתנים בוליאניים מועילים מאוד במקרים רבים.

צורה של שימוש בלולאות ותנאים עריכה

כאשר יוצרים תנאי, יכולים להיות לו שני מצבים: אמת או שקר. לצורך זה המערכת של השפה נעזרת במשתנה בוליאני פנימי, אשר לנו אין גישה אליו. אנו יכולים להעזר במשתנה בוליאני משלנו ולא לבזבז משאבי מערכת נוספים. לדוגמה:

public class bool
{
	public static void main(String[] arg)
	{
		boolean t = true;
		// t is now true
		if(t == true)
		{
			System.out.print("Hello ");
		}
		// Now we set t to false
		t = false;

		if(t == false)
		{
			System.out.println("world");
		}  
	}
}

הפלט של התוכנית יהיה

Hello world


יכולנו לכתוב גם כך את הקוד ולקבל תוצאה זהה:

public class bool
{
	public static void main(String[] arg)
	{
		boolean t = true;
		// t is now true
		if(t)
		{
			System.out.print("Hello ");
		}
		// Now we set t to false
		t = false;

		if(!t)
		{
			System.out.println("world");
		}  
	}
}

גם כאן הפלט יהיה

Hello world


מפני שהצורה בה כתבנו את התנאי השני - בדיקה ישירה האם המשתנה t הוא שקר - שקולה לחלוטין לצורה הקודמת, בה השוונו את t לערך "שקר".


הסבר לדוגמה עריכה

בדוגמה נעשה שימוש במשתנה בוליאני אחד, t, שאותחל להיות אמת. בתנאי הראשון בדק המחשב האם ערך המשתנה t הוא "אמת". מכיוון ש-t אמת, הוצג הפלט "Hello". לאחר מכן, שינינו את ערך המשתנה t לשקר, ואז הגיעה התוכנית לתנאי נוסף, שבדק אם המשתנה t הוא שקר. מכיוון שבשלב זה הערך שהחזיק t הוא ערך שקר, התקיים התנאי והודפס הפלט "world".

פעולות על משתנים בוליאניים עריכה

מטבע הדברים, לא ניתן לבצע פעולות חשבוניות על משתנים בוליאניים - זה לא מוגדר. מצד שני, ניתן לבצע עליהם כמה פעולות אחרות: או, וגם, או שלילה. בהנחה ש-b1, b2 ו-b3 הם משתנים בוליאניים:

  • b3 = b1 && b2 - פעולת "וגם" - b3 שווה אמת רק אם גם b1 וגם b2 הם אמת.
  • b3 = b1 || b2 - פעולת "או" - b3 שווה אמת אם לפחות אחד מהמשתנים b1 ו-b2 הם אמת.
  • b3 = !b1 - פעולת שלילה - b3 יקבל את הערך ההפוך מזה שמחזיק b1.
  • b2 |= b1 - דרך מקוצרת לכתוב b2 = b2 || b1.
  • b2 &= b1 - דרך מקוצרת לכתוב b2 = b2 && b1.

בדיוק כמו עם תנאים (או, ליתר דיוק - בתנאים, בדיוק כמו במשתנים בוליאניים) - ניתן להשתמש בכל צירוף הגיוני של הסימנים האלו, למשל: (b4 && b3) || (b2 && b1).

ערך null עריכה

ערך מיוחד שקיים עבור אובייקטים הוא ערך ה-null, שמשמעותו - שום דבר. שימו לב - null באותיות קטנות. משתנים פרימיטיביים, כלומר - כל המשתנים המוכרים לנו עד כה פרט למחרוזות, אינם יכולים לקבל ערך null. מערכים נחשבים גם הם כאובייקטים, ולכן גם הם יכולים לקבל ערך null.

תחביר וצורת כתיבה עריכה

ניתן לתת לאובייקט ערך null בצורה הבאה: String s = null;

אפשר גם לבדוק אם אובייקט מסויים הוא null: if (s == null) // Do something

כל האובייקטים, אם רק הוכרזו אך לא אותחלו - מכילים ערך null.

גישה עריכה

כל ניסיון לבצע פעולה על אובייקט שהוא null יגרור קריסה של התוכנית, מכיוון ש-null הוא למעשה ערך שלא אותחל. עם זאת, ניתן לבדוק אם אובייקט מסויים הוא null, באמצעות תנאי זהה לזה שראינו קודם.

דוגמא להמחשה עריכה

נתחיל בניסוי:

String s = "Hi";
if(s == null)
{
	System.out.println("The string is null");
}
else
{
	System.out.println("The string isn't null");
}

הפלט של שורות קוד אלה יהיה

The string isn't null


לעומת זאת, אם נאתחל את המשתנה s ל-null, כלומר - נחליף את השורה הראשונה ב-String s = null; נקבל את הפלט

The string is null


נעיר כאן כי אם לא נאתחל כלל את s, נקבל שגיאת הידור - המהדר לא יאפשר גישה למשתנה שלא אותחל.


הפרק הקודם:
תנאים ולולאות
הרחבה על משתנה בוליאני, ערך null הפרק הבא:
מערכים