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 הפרק הבא:
מערכים