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.