
a = 10 מכניס את הערך 10 למשתנה a.a = b.10 = a, גורמת לשגיאה.c = b = a הערך של a נכנס ל-b, וההשמה מחזירה את הערך הזה ל-c. בסוף כל המשתנים מחזיקים 10.d = c = b = a.הטקסט המלא של הדקות הראשונות בהרצאה «Assignment Operator» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז האופרטור הראשון שאנחנו הולכים לדבר עליו זה אופרטור ההשמה. Assignment Operator. למעשה אנחנו ראינו אותו באחד הסרטונים הקודמים וזה אופרטור השווה.
בואו ניקח כאן איזשהו משתנה ונגדיר שהשם שלו זה A וערכו זה 10. בואו ניקח עוד משתנה B ונכניס בתוכו 20. מה בעצם אנחנו רואים כאן? אנחנו רואים שיש לנו את אופרטור ההשמה שמכניס בתוך A את המספר 10. האם אנחנו יכולים עכשיו להכניס לתוכו משהו אחר, לדוגמה 11?
תשובה כן. האם אנחנו יכולים לרשום את הדבר הזה בצורה כזאת? אז אנחנו ראינו גם בעבר שהתשובה היא לא. אופרטור ההשמה תמיד מכניס את הערך שנמצא מימין למשתנה שחייב להיות לי מצד שמאל. הוא לא יכול לעבוד הפוך.
הוא לא ייקח את הערך שמשמאל ויכניס אותו באורך פלא למשתנה מימין. לכן הדבר הזה זה איזושהי שגיאה. האם האופרטור הזה יכול להיות אופרטור ההשמה גם עבור הכנסת משתנה למשתנה?
התשובה היא כמובן. בואו נציג כאן את a ונראה שערכו שווה 20. בהתחלה הוא היה 10, הכנסנו אליו אחר כך 11 ואז הכנסנו אליו את b והוא הפך להיות 20. עכשיו יש משהו מעניין בנוגע לאופרטור הזה.
בואו ניקח משהו כזה. בואו ניקח עוד משתנה ונגדיר אותו כ-C, ולמעשה מה שנעשה זה כזה דבר. C שווה B שווה A. בואו אפילו נוריד מכאן את זה ונוריד את זה.
ועכשיו אנחנו רואים שיש פה איזה משהו מוזר. מה זאת אומרת c שווה b שווה a? מה ירקו של b ומה ירקו של c? אז בואו נריץ ונדפיס את כולם, נגדיר פה את a בצורה כזאת ויש לנו פה גם את b וc, נריץ את זה ונראה שכולם שווים 10. אז מה בעצם קרה כאן?
האם ה-a נכנס ל-b ונכנס ל-c או מה בדיוק קרה כאן? אז אנחנו רואים שבאמת a הכיל 10 שאחר כך עבר ל-b ואחר כך עבר ל-c. אבל אם אנחנו רוצים לדייק מה שקרה כאן ושאופרטור ההשמה קודם כל ביצע את זה, כלומר אי אפשר היה להכניס ערך ל-c בלי באמת לוודא מה יש כאן, עומד בדיוק פה האם פה עומד 10 והוא צריך להיכנס
לתוך C האם כאן עומד 12 והוא אמור להיכנס לתוך C ולכן המחשב קודם כל מבצע את הפעולה הזאת ואז מה שהפעולה הזאת אומרת זה קח את A ותכניס אותו לתוך B אין שום בעיה B קיבל 10 אבל אז ה-10 זה לא אומר שהוא המשיך והגיע לפה זה אומר שהאופרטור שווה, אופרטור ההשמה החזיר את אותו ערך שהוא שם בתוך המשתנה שמשמאלו.
וכאילו שאנחנו שמים כאן סוגריים, וסוגריים אנחנו יודעים שקודם כל המחשב מוציא לפועל. מחשב קודם כל מבצע סוגריים. אז מה עשינו פה? אמרנו למחשב, תקשיב, קח את A קודם כל ותכניס אותו לתוך B. סבבה, המחשב עושה את זה.
ואז הוא מחזיר לנו בדיוק למקום הזה, את מה? מה שהוא הכניס לתוך B וזה חוזר ולכן יש פה עוד השמה והיא נכנסת לתוך C. אם אנחנו נריץ את זה אנחנו נקבל בדיוק את אותו הדבר אבל לא היינו צריכים בכלל להשתמש עם הסוגריים.
כמובן אם אנחנו נמשיך ונגדיר פה גם את D ונבצע דבר כזה ונגדיר פה גם את E ונבצע דבר כזה אז זה חוקי לגמרי ואנחנו יכולים לראות, פה יש לנו את d ואת e, d ו-e ואנחנו יכולים לראות שבמקרה הזה כולם יקבלו 10. אבל אם אנחנו נסתכל מה בעצם קרה כאן, קודם כל המחשב ביצע את זה, לקח את a, הכניס לתוך b
נקודה, אם היינו מסתכלים שלב שלב במחשב זה מה שהתבצע קודם כל. ואז המחשב, או שפת Java ליתר דיוק, החזירה בדיוק לנקודה הזאת את אותו ערך שהיה ב-a וכעת ב-b.
ואז הערך הזה הוא כמובן 10 ואז המחשב מבצע את ההשמה הבאה ומכניס אותו לתוך C, C מקבל 10 ואז הוא מחזיר לנו בחזרה לכאן 10