היקף משתנה בג'אווה

1. סקירה כללית

בג'אווה, כמו בכל שפת תכנות, לכל משתנה יש היקף. זהו קטע התוכנית בו ניתן להשתמש במשתנה והוא תקף.

במדריך זה נציג את ההיקפים הזמינים ב- Java ונדון בהבדלים ביניהם.

2. היקף כיתה

כל משתנה המוצהר בתוך סוגריים הכיתה ( {} ) עם פְּרָטִי משנה גישה אך מחוץ לכל שיטה, יש לו טווח כיתות. כתוצאה, ניתן להשתמש במשתנים אלה בכל מקום בכיתה, אך לא מחוצה לה:

ClassScopeExample בכיתה ציבורית {סכום שלם פרטי פרטי = 0; public void exampleMethod () {amount ++; } בטל את הציבור אחרExampleMethod () {Integer anotherAmount = סכום + 4; }}

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

אם אנחנו לא משתמשים פְּרָטִי, זה יהיה נגיש מכל החבילה. עיין במאמר מגדלי הגישה למידע נוסף.

3. היקף השיטה

כאשר משתנה מוכרז בתוך שיטה, יש לו היקף שיטה ו- זה יהיה תקף רק באותה שיטה:

מחלקה ציבורית MethodScopeExample {שיטת חלל ציבורית A () {אזור שלם = 2; } שיטת הריק הציבורי B () {// שגיאת מהדר, לא ניתן לפתור אזור לאזור משתנה = אזור + 2; }}

ב שיטה A., יצרנו משתנה מתודה שנקרא אֵזוֹר. מסיבה זו, אנו יכולים להשתמש אֵזוֹר בְּתוֹך שיטה A., אך איננו יכולים להשתמש בו בשום מקום אחר.

4. היקף לולאה

אם נכריז על משתנה בתוך לולאה, יהיה לו היקף לולאה ו יהיה זמין רק בתוך הלולאה:

מחלקה ציבורית LoopScopeExample {List listOfNames = Arrays.asList ("Joe", "Susan", "Pattrick"); iterationOfNames () בטל פומבי () {String allNames = ""; עבור (שם מחרוזת: listOfNames) {allNames = allNames + "" + name; } // שגיאת מהדר, לא ניתן לפתור שם למשתנה מחרוזת lastNameUsed = שם; }}

אנו יכולים לראות את השיטה הזו iterationOfNames יש משתנה שיטה שנקרא שֵׁם. ניתן להשתמש במשתנה זה רק בתוך הלולאה ואינו תקף מחוצה לו.

5. היקף סוגר

אנו יכולים להגדיר טווחים נוספים בכל מקום באמצעות סוגריים ({}):

BracketScopeExample {class public void mathOperationExample () {סכום שלם = 0; {מספר שלם = 2; סכום = סכום + מספר; } // שגיאת מהדר, לא ניתן לפתור את המספר כמספר משתנה ++; }}

המשתנה מספר תקף רק בסוגריים.

6. היקפים והצללה משתנה

תאר לעצמך שיש לנו משתנה מחלקה, ואנחנו רוצים להכריז על משתנה מתודה עם אותו שם:

מחלקה ציבורית NestedScopesExample {String title = "Baeldung"; public public printTitle () {System.out.println (title); כותרת מחרוזת = "ג'ון דו"; System.out.println (כותרת); }}

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

המשתנה של שיטת הכותרת עוקף את האפשרות לגשת ל- מעמד מִשְׁתַנֶה כותרת שוב. לכן בפעם השנייה הוא ידפיס "ג'ון דו.

מבלבל, נכון? זה נקרא הצללה משתנה ואינו נוהג טוב. עדיף להשתמש בקידומת זֶה על מנת לגשת ל כותרת משתנה בכיתה, כמו כותרת זו.

7. מסקנה

למדנו את ההיקפים השונים שקיימים בג'אווה.

כמו תמיד, הקוד זמין ב- GitHub.