המרת סוגים וטווחים
הוצג| English | משמעות |
|---|---|
| casting/ˈkæstɪŋ/ | המרת סוגים |
| truncates/ˈtrʌŋkeɪts/ | גזירה |
| widening/ˈwaɪdənɪŋ/ | הרחבה |
| narrowing/ˈnærəʊɪŋ/ | היצרות |
| range/reɪndʒ/ | טווח |
| overflow/ˌəʊvəˈfləʊ/ | התפרצות (Overrun) |
שינוי סוג של ערך
- Casting ממיר ערך מסוג אחד לסוג אחר.
- כתוב את הסוג היעד בסוגריים:
(double) 5נותן5.0;(int) 3.9נותן3. - Casting ל-
intחותך — הוא מוריד את החלק העשרוני, ולא מעגל. (int) 3.9הוא3, ו-(int) -2.7הוא-2(לעבר אפס).
הרחבה מתבצעת אוטומטית
- מעבר מסוג קטן לסוג גדול (
int→double) נקרא הרחבה. - הרחבה היא בטוחה, ולכן Java מבצעת אותה אוטומטית:
double d = 5;מאחסן5.0. - לא נאבד מידוע בעת מעבר מ-
intל-double. - לעיתים רחוקות תצטרך לכתוב השבת סוג בהרחבה, אך הדבר מותר.
הצמצום דורש השבת סוג מפורשת
- מעבר מגדול לקטן (
double→int) נקרא הצמצום — ייתכן ואובדנת נתונים. - Java דורשת השבת סוג מפורשת:
int n = (int) 3.9;(ללא ההשבה, הקוד לא יתקיים). - ההשבה היא הבטחה שלך: "אני יודע שאני מוותר על החלק העשרוני."
- הצמצום חותך (מחזיק) לעבר אפס.
טווח והפרזה
- לכל סוג יש טווח קבוע:
intמכיל כ-±2.1 מיליארד. - עברת הטווח גורמת להפרזה — הערך מתעגל למספר שגוי.
- לא מופיע שגיאה; התוצאה פשוט שגויה בשתיקה.
- עבור שלמים גדולים מאוד, נדרש סוג גדול יותר (כמו
long).
השבה ל-int מחזיקה — היא אינה מעגלת. (int) 3.9 היא 3, ולא 4; (int) 2.99 היא 2. כדי לכפות חילוק בעל-נקודה, יש להשיב אחד מהארגומנטים: (double) 7 / 2 היא 3.5, אך (int)(7.0 / 2) היא 3. ושימו לב להפרזה: תוצאת int שמעבר ל-±2.1 מיליארד מתעגלת בשתיקה, ללא הודעת שגיאה.
חישוב ממוצע לשני שלמים בצורה נכונה:
int a = 7, b = 2;int avg = a / b;→3(חילוק שלמים מוותר על השארית — ככל הנראה לא מה שרציתם).double avg = (double) a / b;→3.5(השבת צד אחד מכפה חילוק בעל-נקודה).
המרה (type) value ממירה בין סוגים. int → double (הרחבה) היא אוטומטית ובטוחה; double → int (צמצום) דורשת המרה אקספליציטית וחותכת כלפי אפס (ללא עיגול). לכל סוג יש טווח קבוע; חריגה ממנו גורמת להתפרצות שקטה.
המרת סוגים בין int ל-double
(int) חותך 3.9 ל-3; המרת צד נותנת 3.5.
מהי הערך של (int) 3.9 ב-Java?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
המרה ל-int חותכת (מסירה אחרי הנקודה) → 3, לא 4.
המרת int ל-double (המרה בטוחה ואוטומטית) נקראת...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מקטן לגדול הוא הרחבה, מתבצע אוטומטית.
איזה מהם דורש המרה (cast) מפורשת כדי להרכיב?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
המרה מ-double ל-int היא הצמצמה ודורשת המרה מפורשת.
מהו הערך של (double) 7 / 2?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
המרת אחד מהאופרנדים מאפשרת חלוקת עשרונייה → 3.5.
תוצאת int מחוץ לטווח הגבולות גורמת לעדיפת טווח (overflow), ש-Java מדווחת עליה כשגיאה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
עדיפת טווח עוברת על סך הכל בשקט — אין שגיאה המועלה.