Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-09-2008, 11:55   #1
Antares88
Senior Member
 
L'Avatar di Antares88
 
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
Antares88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 12:18   #2
agente mm8
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?
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 12:27   #3
k0nt3
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)
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 13:07   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16215
Quote:
Originariamente inviato da Antares88 Guarda i messaggi
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 ?
Vuol dire che, se si arriva a quel punto, non è necessario fare altro, e il programma può terminare.

Ossia, invece di:
Codice PHP:
public static void main(String[] args) {
    
// blah blah blah
    
if (condizione) {
        
// lavoro 1
    
} else {
        
// lavoro 2
    
}
} 
// fine di main 
si può usare:
Codice PHP:
public static void main(String[] args) {
    
// blah blah blah
    
if (condizione) {
        
// lavoro 1
        
return;
    }
    
// lavoro 2
} // fine di main 
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
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.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 14:59   #5
Antares88
Senior Member
 
L'Avatar di Antares88
 
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
Antares88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 15:01   #6
wizard1993
Senior Member
 
L'Avatar di wizard1993
 
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
wizard1993 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 15:34   #7
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7263
Quote:
Originariamente inviato da Antares88 Guarda i messaggi
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.
non c'è un motivo, non serve a niente in questo caso.
ciò non toglie che si può scrivere.. giusto?
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 15:43   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Penso che sia ridondante, nel senso che il return alla fine di un metodo void è implicito
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 15:49   #9
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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;
}
anche se non serve a nulla.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 16:33   #10
71104
Bannato
 
L'Avatar di 71104
 
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.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 18:09   #11
yggdrasil
Senior Member
 
L'Avatar di yggdrasil
 
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
yggdrasil è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2008, 18:34   #12
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7263
ma in questo caso il tipo di ritorno era void
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2008, 08:22   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da yggdrasil Guarda i messaggi
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
Sì però in questo caso, guardando il codice postato, si vede che la variabile intera "vm" istanziata nel corpo del metodo main viene usata solo come appoggio per essere usata nella chiamata System.out.println().

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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2008, 14:50   #14
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16215
Quote:
Originariamente inviato da 71104 Guarda i messaggi
il secondo codice di Ziosilvio contiene un errore; il "lavoro 2" doveva stare dopo la penultima parentesi graffa.
Vero. Grazie. Ora correggo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Musk, rilasciato il trailer del docufilm...
Carburanti, dopo Eni anche IP annuncia u...
HEO Space ha rilasciato una nuova immagi...
La missione Artemis III sarebbe in ritar...
Apple apre Music Hall, una sala concerto...
Adobe arriva su Gemini e Claude: nuove f...
Non solo Fideuram: quasi 2 milioni di it...
I lettori CD di fascia alta potrebbero s...
Tutto il meglio di Amazon weekend: 5 nov...
Proscenic P15+ a 113€ su Amazon: scopa e...
TP-Link Wi-Fi 6 a 59,99€ e Tenda 4G03 Pr...
Un quasi top di gamma a 461€: lo smartph...
Roborock Saros 20 Neo e Flow Complete: 3...
Mac mini si trasforma: chip a 2 nanometr...
Su Amazon c'è un super TV Samsung...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v