Variabilný rozsah v Jave

1. Prehľad

V Jave, ako v každom programovacom jazyku, má každá premenná rozsah. Toto je segment programu, v ktorom je možné použiť premennú a je platný.

V tomto tutoriále predstavíme dostupné rozsahy v Jave a prediskutujeme rozdiely medzi nimi.

2. Rozsah triedy

Každá premenná deklarovaná v zátvorkách triedy ( {} ) s súkromné modifikátor prístupu, ale mimo akejkoľvek metódy, má rozsah triedy. Ako výsledok, tieto premenné sa dajú použiť všade v triede, nie však mimo nej:

verejná trieda ClassScopeExample {súkromné ​​celočíselné množstvo = 0; public void exampleMethod () {suma ++; } public void anotherExampleMethod () {Integer anotherAmount = suma + 4; }}

To vidíme ClassScopeExample má premennú triedy čiastka ku ktorým je prístup v rámci metód triedy.

Ak nepoužívame súkromné, bude prístupný z celého balíka. Ďalšie informácie nájdete v článku o modifikátoroch prístupu.

3. Rozsah metódy

Keď je premenná deklarovaná vo vnútri metódy, má rozsah metódy a bude platiť iba v rámci tej istej metódy:

verejná trieda MethodScopeExample {public void methodA () {Celá oblasť = 2; } public void methodB () {// chyba kompilátora, oblasť sa nedá vyriešiť na premennú oblasť = oblasť + 2; }}

V metódaA, vytvorili sme premennú metódy nazvanú oblasti. Z tohto dôvodu môžeme použiť oblasti vo vnútri metódaA, ale nemôžeme ho použiť nikde inde.

4. Rozsah slučky

Ak deklarujeme premennú vo vnútri slučky, bude mať rozsah slučky a bude k dispozícii iba vo vnútri cyklu:

verejná trieda LoopScopeExample {List listOfNames = Arrays.asList ("Joe", "Susan", "Pattrick"); public void iterationOfNames () {String allNames = ""; pre (Názov reťazca: listOfNames) {allNames = allNames + "" + meno; } // chyba kompilátora, meno nie je možné vyriešiť na premennú String lastNameUsed = name; }}

Túto metódu môžeme vidieť iterationOfNames má premennú metódy nazvanú názov. Túto premennú je možné použiť iba vo vnútri slučky a mimo nej nie je platná.

5. Rozsah konzoly

Pomocou zátvoriek môžeme kdekoľvek definovať ďalšie rozsahy ({}):

verejná trieda BracketScopeExample {public void mathOperationExample () {Integer sum = 0; {Celé číslo = 2; suma = suma + cislo; } // chyba kompilátora, číslo sa nedá vyriešiť ako premenná number ++; }}

Premenná číslo je platné iba v zátvorkách.

6. Rozsahy a variabilné tieňovanie

Predstavte si, že máme premennú triedy a chceme deklarovať premennú metódy s rovnakým názvom:

verejná trieda NestedScopesExample {Názov reťazca = "Baeldung"; public void printTitle () {System.out.println (nadpis); Názov reťazca = "John Doe"; System.out.println (názov); }}

Prvýkrát tlačíme titul, vytlačí „Baeldung“. Potom deklarujte premennú metódy s rovnakým názvom a priraďte jej hodnotu „John Doe“.

Premenná metódy title prepíše možnosť prístupu k súboru trieda premenná titul ešte raz. Preto druhýkrát vytlačí „John Doe.

Mätúce, že? Toto sa volá variabilné tieňovanie a nie je to dobrý postup. Je lepšie použiť predponu toto za účelom prístupu k titul premenná triedy, ako tento.titul.

7. Záver

Dozvedeli sme sa rôzne rozsahy, ktoré existujú v Jave.

Ako vždy, kód je k dispozícii na GitHub.