קבוע הוא א משתנה שערכו אינו יכול להשתנות לאחר שהוקצה. ג'אווה אין תמיכה מובנית לקבועים, אלא לשנות את המשתנים סטטי ו סופי ניתן להשתמש כדי ליצור בצורה יעילה אחת.
קבועים יכולים להפוך את התוכנית שלך לקריאה ולהבנה בקלות רבה יותר על ידי אחרים. בנוסף, קבוע מטמון על ידי JVM כמו גם על ידי היישום שלך, כך ששימוש בקבוע יכול לשפר את הביצועים.
שינוי סטטי
זה מאפשר להשתמש במשתנה מבלי ליצור תחילה מופע של ה- מעמד; חבר כיתה סטטי קשור לכיתה עצמה ולא לאובייקט. כל המופעים בכיתה חולקים את אותו העותק של המשתנה.
משמעות הדבר היא שיישום אחר או עיקרי () יכולים להשתמש בו בקלות.
לדוגמה, הכיתה myClass מכילה משתנה סטטי days_in_week:
myClass בכיתה ציבורית
סטטי בימי_ין_שבוע = 7;
}
כי המשתנה הזה הוא סטטי, ניתן להשתמש בו במקום אחר מבלי ליצור באופן מפורש אובייקט myClass:
המעמד הציבורי myOtherClass {
main void main (מחרוזת [] args) {
System.out.println (myClass.days_in_week);
}
}
שינוי סופי
המשנה הסופי פירושו שערך המשתנה אינו יכול להשתנות. לאחר שהערך מוקצה, לא ניתן להקצות אותו מחדש.
סוגי נתונים פרימיטיביים (כלומר, int, קצר, ארוך, בתים, char, float, כפול, בוליאני) ניתן להפוך ללא שינוי / ללא שינוי באמצעות המתקן הסופי.
יחד, משנים אלה יוצרים משתנה קבוע.
גמר סטטי int DAYS_IN_WEEK = 7;
שים לב שהצהרנו על DAYS_IN_WEEK בכל הכובעים ברגע שהוספנו את ה- סופי שינוי. זהו פרקטיקה ארוכת שנים בקרב מתכנתי Java להגדיר משתנים קבועים בכל הכובעים, כמו גם להפריד מילים עם קו תחתון.
Java אינה דורשת עיצוב זה אך מקלה על מי שקורא את הקוד באופן מיידי לזהות קבוע.
בעיות פוטנציאליות עם משתנים קבועים
האופן שבו מילת המפתח הסופית עובדת ב- Java היא שמצביע המשתנה לערך אינו יכול להשתנות. בואו ונחזור על כך: זה המצביע שלא יכול לשנות את המיקום אליו הוא מכוון.
אין שום ערובה לכך שהאובייקט אליו מפנים יישאר זהה, רק שהמשתנה תמיד יחזיק הפניה לאותו אובייקט. אם האובייקט שהפנה אליו ניתן לשינוי (כלומר יש שדות שניתן לשנות), המשתנה הקבוע עשוי להכיל ערך שאינו מה שהוקצה במקור.