Java/שיטות: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות) |
|||
שורה 89:
מה תדפיס התוכנית? נסו לנחש, ואז הריצו אותה. הניחוש היה, קרוב לוודאי, שהפלט יהיה {{פלט|A is 3, B is 4}}
למעשה הפלט היה {{פלט|A is 1, B is 2}}
האם המהדר דילג על ביצוע השיטה? כדי להבין את התנהגות התוכנית, נצטרך להכיר מונח חדש - תחום ההגדרה של המשתנים, ולהבין כיצד עובד המנגנון של קריאה לשיטה.
===תחום ההגדרה של משתנים מקומיים===
לכל משתנה בג'אווה תחום הגדרה מסויים. משתנה שנוצר בתוך לולאה - יהיה קיים רק בתוך הלולאה. משתנה שנוצר בתוך שיטה - יהיה קיים רק עבור אותה שיטה. אם ננסה לפנות אל המשתנה ממקום אחר בתוכנית שנמצא מחוץ לתחום ההגדרה - המחשב יתנהג כאילו המשתנה לא קיים, והמשתמע מכך - התוכנית לא תעבור הידור. יותר מכך: גם משך החיים של המשתנים המקומיים האלה מוגבל לתחום ההגדרה - כאשר מסתיים הבלוק בו הגדרנו את המשתנה, הערך שהיה במשתנה אובד. למשל - אם הגדרנו משתנה מקומי בתוך שיטה, עם סיום פעולת השיטה - הערך שהיה בתוך המשתנה "נשכח" - נעלם. בפעם הבאה שנקרא לאותה שיטה, אותו משתנה לא ישמור על ערכו אלא יחזור לערך האיתחול שלו.
===משתנים מקומיים וקריאה לשיטות=== כאשר אנו קוראים לשיטה חיצונית עם משתנים מקומיים בתור פרמטרים, המשתנים המקומיים עצמם אינם עוברים כפרמטרים. במקום זה, שיטת עבודה זו מכונה '''Pass by Value''' (בניגוד ל-Pass by Reference).
===משתנים גלובליים===
|