|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 832
|
[Java] return nel main
Stavo vedendo il listato di un esercizio e ho trovato un'istruzione return alla fine del metodo main.
Come mai ? il main ha tipo di ritorno void, a che scopo metterci un return alla fine ? tra l'altro la classe compila, non ci sono errori, e in esecuzione funziona. Mi spiegate questa cosa ? Che senso ha metterci un return quando è ovvio che completata l'esecuzione del main il controllo torna alla JVM ?
__________________
Trattative concluse su mercatino: The_Saint, ewandeep, Wiltord, maurizioi, Compulsion, mauryxxx76 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
Beh, nn saprei, può essere che il prog viene chiamato da un altro prog e quindi deve il prog chiamante usa la varibile ritornata dal main.
Per curiosità, nn puoi mandarmi il source code? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7263
|
non ha molto senso se il valore di ritorno è void, comunque il linguaggio permette di inserirlo.
significa che quando arriva a quella istruzione esce dal metodo main (anche se c'è altro codice dopo che quindi non verrà mai raggiunto) |
|
|
|
|
|
#4 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16215
|
Quote:
Ossia, invece di: Codice PHP:
Codice PHP:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 05-09-2008 alle 14:50. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 832
|
Questo è il frammento di codice(la classe non è definita).
Codice:
public static int B(int pb) {
/* b0 */ System.out.println("In B. Parametro pb = " + pb);
/* b1 */ return pb+1;
}
public static int A(int pa) {
/* a0 */ System.out.println("In A. Parametro pa = " + pa);
/* a1 */ System.out.println("Chiamata di B(" + (pa * 2) + ").");
/* a2 */ int va = B(pa * 2);
/* a3 */ System.out.println("Di nuovo in A. va = " + va);
/* a4 */ return va + pa;
}
public static void main(String[] args) {
/* m0 */ System.out.println("In main.");
/* m1 */ int vm = 22;
/* m2 */ System.out.println("Chiamata di A(" + vm + ").");
/* m3 */ vm = A(vm);
/* m4 */ System.out.println("Di nuovo in main. vm = " + vm);
/* m5 */ return;
}
Perché mettere un return li quando anche senza di esso il main terminerebbe e restituirebbe il controllo ? non c'è altro codice dopo e il return non fa parte di un controllo condizionale. @Ziosilvio: è giusto il secondo codice che hai postato ? forse non ho capito bene ma non mi torna.
__________________
Trattative concluse su mercatino: The_Saint, ewandeep, Wiltord, maurizioi, Compulsion, mauryxxx76 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
il return in un metodo funziona come un break in un ciclo
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7263
|
Quote:
ciò non toglie che si può scrivere.. giusto?
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2794
|
Penso che sia ridondante, nel senso che il return alla fine di un metodo void è implicito
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Magari è stato inserito solo per l'abitudine di vedere un return al termine della funzione.
Anche in C e in C++ è perfettamente lecito dire: Codice:
void esempio()
{
return;
}
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
concordo, è semplicemente ridondante. non è la peggiore delle idiozie che capita di vedere quando si legge del codice altrui.
@Antaz: si, il secondo codice di Ziosilvio contiene un errore; il "lavoro 2" doveva stare dopo la penultima parentesi graffa. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 808
|
vorrei però far notare che anche in java, come in tutti gli altri programmi, il sistema operativo può ricevere un valore intero che indica se il programma è stato terminato bene o no
infatti in c è molto più corretto usare int main che void main e ritornare 0 se tutto finisce bene o un altro numero se va male |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7263
|
ma in questo caso il tipo di ritorno era void
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Inoltre per tornare un valore al sistema operativo allo scopo di indicare la corretta esecuzione dell'applicazione o un avvenuto errore, in Java di solito si usa il metodo System.exit(intArgument) [o Runtime.getRuntime.exit(intArgument)].
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#14 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16215
|
Vero. Grazie. Ora correggo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:13.




















