JAVA KINTAMIEJI
Java vietiniai kintamieji
Vietinis kintamasis deklaruojamas metodo, konstruktoriaus arba kodo bloko viduje. Jis skirtas laikinai reikšmei, kurios reikia tik atliekant konkretų veiksmą.
Kas yra vietinis kintamasis?
Šiame pavyzdyje kaina yra vietinis metodo rodytiKaina() kintamasis:
public class Main {
static void rodytiKaina() {
double kaina = 2.49;
System.out.println("Duonos kaina: " + kaina + " Eur");
}
public static void main(String[] args) {
rodytiKaina();
}
}Duonos kaina: 2.49 Eur
- Metodas
rodytiKaina()pradeda vykdyti savo kodą. - Jo viduje sukuriamas vietinis
doublekintamasiskaina. - Metodas panaudoja reikšmę ir išveda ją į konsolę.
- Metodui baigus darbą, šis vietinis kintamasis daugiau nebereikalingas.
Svarbiausios savybės
| Savybė | Ką ji reiškia? |
|---|---|
| Vieta | Deklaruojamas metodo, konstruktoriaus arba bloko viduje |
| Galiojimo sritis | Pasiekiamas tik tame bloke, kuriame buvo deklaruotas |
| Gyvavimo laikas | Reikalingas tik vykdant atitinkamą metodą arba bloką |
| Pradinė reikšmė | Java jos nesuteikia – programuotojas turi inicializuoti kintamąjį |
Kintamasis matomas tik savo metode
Kintamasis kaina sukurtas metode rodytiKaina(), todėl metodas main() jo tiesiogiai nemato.
public class Main {
static void rodytiKaina() {
double kaina = 2.49;
System.out.println(kaina);
}
public static void main(String[] args) {
rodytiKaina();
System.out.println(kaina); // Kompiliavimo klaida
}
}error: cannot find symbol
symbol: variable kaina
Skirtingi metodai yra tarsi atskiri kambariai: viename kambaryje padėtas daiktas savaime nėra pasiekiamas kitame.
Vietinis kintamasis kodo bloke
Figūriniai skliaustai { ... } sukuria bloką. Jo viduje deklaruotas kintamasis galioja tik iki uždarančio skliausto.
public class Main {
public static void main(String[] args) {
boolean lyja = true;
if (lyja) {
String daiktas = "skėtis";
System.out.println("Pasiimk: " + daiktas);
}
// System.out.println(daiktas); // Čia daiktas nebepasiekiamas
}
}Pasiimk: skėtis
- Kadangi
lyjayratrue, programa įeina įifbloką. - Bloke sukuriamas kintamasis
daiktasir išvedama jo reikšmė. - Pasibaigus blokui, vardas
daiktastame metode nebepasiekiamas.
Vietinis ciklo kintamasis
for ciklo antraštėje deklaruotas skaitiklis taip pat yra vietinis kintamasis.
public class Main {
public static void main(String[] args) {
for (int diena = 1; diena <= 3; diena++) {
System.out.println("Diena " + diena);
}
// System.out.println(diena); // Už ciklo kintamojo nėra
}
}Diena 1
Diena 2
Diena 3
Kintamasis diena reikalingas tik ciklui. Kai ciklas baigiasi, už jo ribų šio pavadinimo naudoti nebegalima.
Prieš naudojimą būtina priskirti reikšmę
Java vietiniams kintamiesiems automatiškai nesuteikia numatytosios reikšmės:
public class Main {
public static void main(String[] args) {
int obuoliuSkaicius;
System.out.println(obuoliuSkaicius);
// Klaida: kintamajam dar nepriskirta reikšmė
}
}error: variable obuoliuSkaicius might not have been initialized
Kintamąjį galima deklaruoti vienoje eilutėje, bet prieš skaitant jo reikšmę ją būtina priskirti:
public class Main {
public static void main(String[] args) {
int obuoliuSkaicius;
obuoliuSkaicius = 5;
System.out.println("Obuolių: " + obuoliuSkaicius);
}
}Obuolių: 5
Tas pats pavadinimas skirtinguose metoduose
Du metodai gali turėti vienodai pavadintus vietinius kintamuosius, nes jų galiojimo sritys nesusikerta.
public class Main {
static void ruostiPusrycius() {
String gerimas = "arbata";
System.out.println("Pusryčiams: " + gerimas);
}
static void ruostiVakariene() {
String gerimas = "vanduo";
System.out.println("Vakarienei: " + gerimas);
}
public static void main(String[] args) {
ruostiPusrycius();
ruostiVakariene();
}
}Pusryčiams: arbata
Vakarienei: vanduo
Kiekvienas gerimas priklauso tik savo metodui. Vieno metodo reikšmės pakeitimas nepakeistų kito metodo kintamojo.
Ką verta prisiminti?
- Vietinį kintamąjį deklaruok kuo arčiau vietos, kurioje jis naudojamas.
- Prieš pirmą naudojimą visada priskirk jam reikšmę.
- Nesitikėk pasiekti kintamojo už jo metodo ar bloko ribų.
- Rinkis aiškų pavadinimą, nusakantį laikinos reikšmės paskirtį.
- Vietinis kintamasis negali būti pažymėtas
static.

