PracticU

הסבר על Casting

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים › הסבר על Casting
הסבר על Casting
השיעור מציג את המושג קאסטינג (casting), שהוא המרה זמנית של ערך מטיפוס נתונים אחד לטיפוס אחר, לצורך ההשמה בלבד.
השלבים העיקריים
1. מה זה קאסטינג: המרה זמנית של ערך מטיפוס נתונים אחד לטיפוס אחר, כדי להכניס אותו למשתנה מהטיפוס השני.
2. Implicit Casting: המרה שהקומפיילר מבצע בעצמו, כשאין סכנה לאיבוד מידע. לדוגמה, ערך מסוג int נכנס למשתנה long, כי הטיפוס הגדול מכיל את הקטן.
3. Explicit Casting: המרה שהמתכנת מבקש במפורש, כשיש סכנה לאיבוד מידע. הקומפיילר לא מבצע אותה לבד.
4. מצב שהקומפיילר לא מאשר: הכנסת double למשתנה int נדחית, כי double יכול להחזיק גם ערך עשרוני וגם מספר גדול בהרבה.
5. פונקציית המרה: כשיש היגיון בהמרה, כמו מספר שרוצים להפוך למחרוזת, צריך פונקציה מיוחדת שמבצעת את ההמרה בזמן הריצה.
6. המרה שאין לה היגיון: יש המרות שאין להן משמעות, כמו תו שמכניסים למשתנה boolean. במקרה כזה אין קאסטינג ואין פונקציה מוכנה.
שימו לב
לא כל הכנסה של טיפוס לטיפוס אחר אפשרית, ולכן כדאי לדעת מראש מה הקומפיילר יאשר.
השיעורים הבאים מראים איך מבצעים explicit casting ואיך משתמשים בפונקציות המרה.
השיעור הבא בקורס: Implicit Casting

פרקי ההרצאה: הסבר על Casting

  1. 00:00

    מהו קאסטינג והמרה זמנית

  2. 00:59

    המרת טיפוס נתונים לטיפוס אחר

  3. 02:02

    דוגמה: מרחק לירח בתוך משתנה long

  4. 02:58

    המרה מרומזת Implicit Casting

  5. 03:56

    דוגמה: int לתוך long ללא בעיה

  6. 04:30

    המרה מפורשת Explicit Casting

  7. 05:07

    עיגול משכורת כלפי מעלה לאינטג'ר

  8. 05:45

    אובדן מידע בהמרה מפורשת

תמלול ההרצאה: הסבר על Casting

הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Casting» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:24

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

  3. 00:43

    עכשיו, למה לנו לעשות דבר כזה? אז סיבה אחת לדוגמה יכול להיות לנו שיש לנו איזשהו משתנה מסוג אחד ואנחנו רוצים להכניס אותו למשתנה מסוג אחר. אז אם אנחנו רוצים לבצע את זה, האם בכלל המערכת מסכימה לעשות דבר כזה?

  4. 01:04

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

  5. 01:25

    זאתי דוגמה אחת שיכולה להיות. אז בואו נראה. הנה דוגמה, יש לנו כאן איזה שהוא משתנה מסוג אינטג'ר שנקרא Moon Distance, המרחק לירח.

  6. 01:37

    יש לנו משתנה נוסף מסוג long שנקרא distances in space, הוא כנראה מחזיק מרחקים בחלל. בגלל שמרחקים בחלל יכולים להיות מאוד מאוד גדולים, הרבה יותר מ-integer, אז יש לנו long.

  7. 01:51

    ל-moon distance הכנסנו את המרחק מכדור הארץ עד לירח, שזה 384,400 קילומטר, במקרה הזה זה במטרים. אוקיי, ועכשיו אנחנו רוצים לקחת את ה-moon distance ולהכניס אותו למשתנה distances in space אבל שניהם בעלי טיפוסים אחרים.

  8. 02:14

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

  9. 02:25

    יש לנו סלארי מסוג דאבל. יש לנו עוד איזשהו אינטג'ר שנקרא upper rounded salary, כאילו אנחנו רוצים לקחת את הסלארי ולעגל אותה כלפי מעלה. אנחנו רוצים להכניס בסלרי לסלרי איזשהו ערך מהיוזר אוקיי אז יש לנו console.nextdouble יוזר הביא לנו את הסלרי שלו ואנחנו רוצים לעגל אותה כלפי מעלה לצורך חישובים לצורך הצגות לצורך חישובי טאקס לא משנה למה ואז אנחנו רוצים להכניס את הסלרי ל upper

  10. 02:56

    rounded salary האם הדבר הזה ניתן לביצוע שני הדברים האלה שני המשתנים הם בעלי טיפוסים שונים לגמרי אוקיי יש כמה סוגי קאסטינגים דבר ראשון implicit casting המרה מרומזת מתבצעת אוטומטית על ידי הקומפיילר אנחנו לא צריכים להגיד לקומפיילר לעשות את זה הקומפיילר יודע אוטומטית ומסכים לבצע את זה הקומפיילר יסכים לעשות את זה רק אם הוא

  11. 03:28

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

  12. 03:51

    אז אין פה בעיה, המשתנה הגדול מסוגל להכיל את המשתנה הקטן. לא תהיה שום בעיה, קומפיילר יאשר את זה. אז כאן אנחנו רואים את הדוגמה הזאת. יש לנו את ה-moon distance שהוא מסוג integer ואנחנו רוצים להכניס אותו לתוך distances in space שהוא מסוג long.

  13. 04:11

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

  14. 04:33

    לכן זה נקרא implicit casting, הוא עשה את זה בצורה מרומזת, explicit casting, המרה מפורשת. המרה מפורשת זה מצב שיכול להיות שאנחנו הולכים לאבד מידע.

  15. 04:53

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

  16. 05:11

    הנה דוגמה יש לנו את הסלארי, יש לנו את ה-Upper Rounded Salary, קיבלנו את ה-Salary מה-User ואנחנו רוצים לקחת את ה-Salary ולהכניס את זה ל-Upper Rounded Salary.

  17. 05:23

    מה הבעיה? אז קודם כל דאבל יכול להחזיק בכלל ערך הרבה יותר גבוה מאינטג'ר, אז אנחנו יכולים לאבד מידע. מה גם שדאבל יכול להחזיק ערך עשרוני, אינטג'ר לא יכול להחזיק ערך עשרוני, זה גם נחשב שאנחנו איבדנו את המידע.

  18. 05:42

    לכן הקומפיילר קודם כל לא מאשר לבצע את הדבר הזה אבל במקרים מסוימים בעיקר במצבים של ערכים נומריים כמו במצב הזה המתכנת יכול לעשות עוד איזה משהו בשביל לומר לקומפיילר תקשיב אני מאשר לעשות את זה ובוא תעשה לי תעשה לי את זה בכל מקרה זאתי המרה מפורשת כי אנחנו בצורה

לקורס המלא: קורס ג'אווה למתחילים אונליין

ההרצאה הקודמת: תרגול לפרק של User Input

ההרצאה הבאה: Implicit Casting

קורסים נוספים במסלול

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס סלניום מתקדם - CI/CD - Continues Integration
  • קורס מייבן - Maven