JAVA METODAI
Java return ir grąžinamosios reikšmės
Metodas gali ne tik atlikti veiksmą, bet ir apskaičiuoti bei grąžinti rezultatą. Grąžinamosios reikšmės tipas rašomas vietoje void, o rezultatas perduodamas su return.
void ar grąžinamoji reikšmė?
| Metodo tipas | Elgsena | Pavyzdys |
|---|---|---|
void | Negrąžina reikšmės | static void pasisveikinti() |
int | Grąžina sveikąjį skaičių | static int sudetiKainas() |
boolean | Grąžina true arba false | static boolean arSilta() |
String | Grąžina tekstą | static String apibudintiOra() |
Reikšmės grąžinimas
Šis metodas priima pradinę prekės kainą, atima 5 eurų nuolaidą ir grąžina naują kainą:
public class Main {
static int pritaikytiNuolaida(int pradineKaina) {
return pradineKaina - 5;
}
public static void main(String[] args) {
System.out.println(pritaikytiNuolaida(25));
}
}20
- Iškviečiant metodą argumentas
25perduodamas parametruipradineKaina. - Metodo viduje apskaičiuojama išraiška
25 - 5. returngrąžina gautą skaičių20atgal į iškvietimo vietą.- Grąžinta reikšmė patenka į
println(), todėl konsolėje matome 20. - Kadangi metodo tipas yra
int, grąžinamas rezultatas taip pat turi būti sveikasis skaičius.
Rezultatas iš kelių parametrų
return gali grąžinti išraiškos rezultatą, apskaičiuotą naudojant kelis parametrus:
public class Main {
static int sudetiKainas(int duonosKaina, int pienoKaina) {
return duonosKaina + pienoKaina;
}
public static void main(String[] args) {
System.out.println(sudetiKainas(3, 2));
}
}5
- Metodui perduodama duonos kaina
3ir pieno kaina2. - Šios reikšmės patenka į parametrus
duonosKainairpienoKaina. returnapskaičiuoja3 + 2ir grąžina5.println()parodo grąžintą rezultatą konsolėje.
Metodo rezultato saugojimas
Grąžintą reikšmę galima iš karto naudoti arba išsaugoti suderinamo tipo kintamajame:
public class Main {
static int sudetiKainas(int duonosKaina, int pienoKaina) {
return duonosKaina + pienoKaina;
}
public static void main(String[] args) {
int bendraKaina = sudetiKainas(3, 2);
System.out.println("Bendra kaina: " + bendraKaina + " eurai");
}
}Bendra kaina: 5 eurai
- Metodas
sudetiKainas(3, 2)apskaičiuoja ir grąžina skaičių5. - Šį kartą rezultatas nėra spausdinamas iš karto.
- Jis išsaugomas
intkintamajamebendraKaina. - Kitą eilutę šį kintamąjį sujungiame su paaiškinamuoju tekstu ir parodome konsolėje.
Jam galima suteikti prasmingą pavadinimą, panaudoti keliose vietose arba patikrinti prieš tęsiant programą.
Kiti grąžinamųjų reikšmių tipai
Metodas gali grąžinti ne tik skaičių. Pavyzdžiui, boolean rezultatas tinka sąlygai apskaičiuoti:
public class Main {
static boolean arSilta(int temperatura) {
return temperatura >= 20;
}
public static void main(String[] args) {
boolean silta = arSilta(22);
System.out.println(silta);
}
}true
- Metodui
arSilta()perduodama temperatūra22. - Metodo viduje patikrinama sąlyga
22 >= 20. - Ši sąlyga yra teisinga, todėl
returngrąžina loginę reikšmętrue. - Grąžinta reikšmė išsaugoma
booleankintamajamesilta. println()konsolėje parodo true.
return sąlygose
Skirtingos metodo šakos gali grąžinti skirtingus rezultatus:
public class Main {
static String apibudintiOra(int temperatura) {
if (temperatura < 0) {
return "Šalta";
}
if (temperatura < 20) {
return "Vėsu";
}
return "Šilta";
}
public static void main(String[] args) {
System.out.println(apibudintiOra(15));
}
}Vėsu
- Metodui perduodama temperatūra
15. - Pirmoji sąlyga tikrina
15 < 0. Ji klaidinga, todėl Šalta negrąžinama. - Antroji sąlyga tikrina
15 < 20. Ji teisinga. return "Vėsu"grąžina tekstą ir iš karto užbaigia metodo vykdymą.- Paskutinė eilutė
return "Šilta"šio iškvietimo metu nebepasiekiama.
Jei perduotume -5, būtų grąžinta Šalta. Jei perduotume 25, abi sąlygos būtų klaidingos ir metodas grąžintų Šilta.
Svarbios return taisyklės
- Grąžinama reikšmė turi atitikti deklaruotą metodo tipą.
- Reikšmę grąžinantis metodas turi pateikti rezultatą visuose galimuose vykdymo keliuose.
returniš karto užbaigia metodo vykdymą.- Po besąlyginio
returntame pačiame bloke negali būti pasiekiamo kodo. voidmetode galima naudoti tuščiąreturn;ankstyvam išėjimui, tačiau negalima grąžinti reikšmės.

