Ce face return și void
return valoare; oprește imediat metoda și dă apelantului valoarea, care trebuie să se potrivească cu tipul declarat în antet. Într-o metodă cu tip returnat, fiecare drum prin cod trebuie să se termine cu return (sau cu aruncarea unei excepții), altfel compilatorul raportează missing return statement.
void înseamnă „nu returnează nimic”. Metodele void fac ceva (afișează, modifică un obiect, scriu un fișier) și se termină la acolada finală sau la un return; fără valoare, folosit pentru ieșire timpurie.
Ieșirea timpurie („guard clause”) tratează cazurile speciale la începutul metodei, cu return, ca restul codului să nu fie indentat în else-uri. După un return, codul din același bloc nu se mai poate executa și nu compilează (unreachable statement).
Exemple
Exemplul 1: Valori returnate și metode void
arie returnează un double, folosit apoi în calcul. raport este void: doar afișează.
public class Main {
static double arie(double lungime, double latime) {
return lungime * latime;
}
static void raport(String camera, double mp) {
System.out.printf("%-10s %6.2f m²%n", camera, mp);
}
public static void main(String[] args) {
double sufragerie = arie(5.2, 4.0);
double dormitor = arie(3.5, 3.2);
raport("sufragerie", sufragerie);
raport("dormitor", dormitor);
raport("total", sufragerie + dormitor);
}
}
Rezultat
sufragerie 20.80 m²
dormitor 11.20 m²
total 32.00 m²
Exemplul 2: Ieșire timpurie
Cazurile invalide sunt tratate la început, fiecare cu return. În metoda void, return; fără valoare doar oprește metoda.
public class Main {
static String verificaCnp(String cnp) {
if (cnp == null || cnp.isEmpty()) {
return "lipsă";
}
if (cnp.length() != 13) {
return "trebuie 13 cifre, are " + cnp.length();
}
for (char c : cnp.toCharArray()) {
if (!Character.isDigit(c)) {
return "conține caracterul '" + c + "'";
}
}
return "format corect";
}
static void saluta(String nume) {
if (nume.isBlank()) {
return;
}
System.out.println("Bună, " + nume + "!");
}
public static void main(String[] args) {
System.out.println(verificaCnp(""));
System.out.println(verificaCnp("12345"));
System.out.println(verificaCnp("1990101x22334"));
System.out.println(verificaCnp("1990101223344"));
saluta(" ");
saluta("Elena");
}
}
Rezultat
lipsă
trebuie 13 cifre, are 5
conține caracterul 'x'
format corect
Bună, Elena!
Greșeli frecvente
- Lipsa lui
returnpe o ramură (de exemplu doar înif, fărăelse):missing return statement. return valoare;într-o metodăvoid:incompatible types: unexpected return value.- Cod scris după
returnîn același bloc:unreachable statement.
Comenzi înrudite
Metode: O metodă grupează cod sub un nume, primește parametri și poate returna o valoare; Java permite supraîncărcare și varargs.break și continue: break oprește bucla (sau switch-ul) curentă; continue sare peste restul pasului curent; cu etichete acționează asupra unei bucle exterioare.if și else: Execută un bloc doar dacă o condiție boolean este adevărată; else și else if tratează celelalte cazuri.