Promjenjivi opseg u Javi

1. Pregled

U Javi, kao i u bilo kojem programskom jeziku, svaka varijabla ima opseg. Ovo je segment programa u kojem se varijabla može koristiti i vrijedi.

U ovom uputstvu predstavit ćemo dostupne opsege na Javi i razgovarati o razlikama između njih.

2. Opseg razreda

Svaka varijabla deklarirana unutar zagrada klase ( {} ) sa privatni modifikator pristupa, ali izvan bilo koje metode, ima opseg klase. Kao rezultat, ove se varijable mogu koristiti svugdje u klasi, ali ne i izvan nje:

javna klasa ClassScopeExample {private Integer iznos = 0; public void exampleMethod () {iznos ++; } public void anotherExampleMethod () {Integer anotherAmount = iznos + 4; }}

To možemo vidjeti ClassScopeExample ima varijablu klase iznos kojima se može pristupiti unutar metoda klase.

Ako ne koristimo privatni, bit će dostupan iz cijelog paketa. Dodatne informacije potražite u članku o modifikatorima pristupa.

3. Opseg metode

Kada je varijabla deklarirana unutar metode, ona ima opseg metode i vrijedit će samo unutar iste metode:

javna klasa MethodScopeExample {public void methodA () {Integer area = 2; } javna void metodaB () {// pogreška kompajlera, područje se ne može razriješiti na varijablu area = area + 2; }}

U metodaA, stvorili smo varijablu metode koja se zove područje. Iz tog razloga možemo koristiti područje iznutra metodaA, ali ne možemo ga koristiti nigdje drugdje.

4. Opseg petlje

Ako deklariramo varijablu unutar petlje, ona će imati opseg petlje i bit će dostupno samo unutar petlje:

javna klasa LoopScopeExample {List listOfNames = Arrays.asList ("Joe", "Susan", "P Hattrick"); javna void iteracijaOfNames () {String allNames = ""; za (Ime niza: listOfNames) {allNames = allNames + "" + name; } // greška kompajlera, ime se ne može razriješiti na varijablu String lastNameUsed = name; }}

Možemo vidjeti tu metodu iteracijaOfNames ima varijablu metode koja se naziva Ime. Ova se varijabla može koristiti samo unutar petlje i nije valjana izvan nje.

5. Opseg nosača

Dodatne opsege možemo definirati bilo gdje pomoću zagrada ({}):

javna klasa BracketScopeExample {public void mathOperationExample () {Integer sum = 0; {Cijeli broj = 2; zbroj = zbroj + broj; } // greška kompajlera, broj se ne može riješiti kao varijabla broj ++; }}

Varijabla broj vrijedi samo u zagradama.

6. Opsezi i varijabilno sjenčanje

Zamislite da imamo varijablu klase i želimo proglasiti varijablu metode s istim imenom:

javna klasa NestedScopesExample {String title = "Baeldung"; public void printTitle () {System.out.println (naslov); Naslov niza = "John Doe"; System.out.println (naslov); }}

Prvi put ispisujemo titula, ispisat će "Baeldung". Nakon toga proglasite varijablu metode s istim imenom i dodijelite joj vrijednost „John Doe“.

Varijabla metode title nadjačava mogućnost pristupa datoteci razred varijabilna titula opet. Zato će drugi put otisnuti “John Doe.

Zbunjujuće, zar ne? Ovo se zove varijabilno zasjenjenje i nije dobra praksa. Bolje je koristiti prefiks ovaj kako bi se pristupilo titula varijabla klase, poput ovo.naslov.

7. Zaključak

Naučili smo različite domete koji postoje na Javi.

Kao i uvijek, kôd je dostupan na GitHubu.