מתי מאותחלים משתנים סטטיים ב- Java?

1. הקדמה

במדריך זה נחקור את תהליך אתחול המשתנה הסטטי. המכונה הווירטואלית של Java (JVM) עוקבת אחר תהליך זה במהלך טעינת הכיתה.

2. תהליך אתחול

ברמה גבוהה, ה- JVM מבצע את השלבים הבאים:

ראשית, הכיתה טעונה ומקושרת. לאחר מכן, שלב "האתחול" של תהליך זה מעבד את אתחול המשתנה הסטטי. סוף - סוף, ה רָאשִׁי השיטה הקשורה בכיתה נקראת.

בחלק הבא נבחן אתחול משתני הכיתה.

3. משתנה כיתתי

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

לעומת זאת, מופע של מחלקה יאותחל את משתני המופע (משתנים לא סטטיים). כל המקרים של כיתה חולקים את המשתנים הסטטיים של הכיתה.

בואו ניקח דוגמא לשיעור StaticVariableDemo:

מעמד ציבורי StaticVariableDemo {intic public int i; intic public int j = 20; ציבורי StaticVariableDemo () {}}

ראשית, ה- JVM יוצר a מעמד אובייקט עבור הכיתה StaticVariableDemo. לאחר מכן, סטָטִי אתחולי שדה מקצים ערך ברירת מחדל משמעותי לשדות הסטטיים. בדוגמה שלנו לעיל, משתנה הכיתה אני מאותחל לראשונה עם int ערך ברירת המחדל של אפס.

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

4. משתנה בבלוק סטטי

ניקח דוגמא נוספת:

מעמד ציבורי StaticVariableDemo {ציבורי סטטי ציבורי; סטטי {z = 30; } ציבורי StaticVariableDemo () {}}

במקרה זה, אתחול המשתנה יהיה ברצף. לדוגמה, JVM מקצה תחילה משתנה z לברירת מחדל int ערך 0. ואז, ב סטָטִי לחסום, הוא שונה ל -30.

5. משתנה בכיתה מקוננת סטטית

לסיום, ניקח דוגמה למעמד המקונן בתוך החיצוני StaticVariableDemo מעמד:

class class StaticVariableDemo {public StaticVariableDemo () {} class static Nested {public static String nestedClassStaticVariable = "test"; }}

במקרה זה, הכיתה StaticVariableDemo טוען את מקונן מעמד. זה יאותחל את המשתנה הסטטי nestedClassStaticVariable.

6. מסקנה

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

כמו תמיד, קטעי הקוד זמינים ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found