Java/Metodi: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
taglio
→‎Il main(): incollo e integro
Riga 54:
=== Il ''main()'' ===
{{vedi anche|Java/Concetti_fondamentali#Ciclo_di_vita_del_programma{{!}}Concetti fondamentali}}
In Java, così come negli altri linguaggi di programmazione, l'esecuzione del programma comincia sempre da un punto
Lo stesso "main()" è un normale metodo Java, esattamente al pari degli altri. La differenza rispetto agli altri è che, da qualche parte, è stato deciso per convenzione che un programma Java comincia quando la macchina virtuale invoca un metodo che si chiama ''main'', se soddisfa determinati requisiti (deve essere <code>static</code> e <code>public</code>, avere tipo di ritorno <code>void</code>, e un solo argomento di tipo <code>String[]</code>).
convenzionalmente stabilito. In Java, si tratta del [[Java/Metodi#Il metodo main()|metodo main()]].
 
Lo stesso "main()"Esso è un normale metodo Java, esattamente al pari degli altri. La differenza rispetto agli altri è che, da qualche parte, è stato deciso per convenzione che un programma Java comincia quando la macchina virtuale invoca un metodo che si chiama ''main'', se soddisfa determinati requisiti: (deve essere <code>static</code>obbligatoriamente edefinito come <code>public</code>, averee tipostatic di(ma ritornosi <code>void</code>,noti eche unla solo argomento di tipo <code>String[]</code>).classe
a cui appartiene non deve necessariamente essere public). Esso deve accettare un solo argomento, di tipo String[],
e avere <tt>void</tt> come tipo di ritorno:
public static void main(String[] args) {}
 
L'array ''args'' contiene le opzioni che vengono passate al programma Java da riga di comando:
java nomepackage.nomeclasse opzione1 opzione2 ...
Notare che la macchina virtuale distingue tra le opzioni passate ''alla macchina virtuale'' e quelle passate al programma; in altre parole, in questo esempio,
java -cp . -jar NomeProgramma.jar opzione1 opzione2 ...
solo le opzioni finali finiscono nell'array di stringhe.
 
 
=== Analogia con il C ===
La convenzione adottata dal Java è in analogia con il linguaggio C++, nel quale la funzione di partenza è tipicamente definita come
int main(int argc, char** argv) {}
La somiglianza si nota maggiormente se si scrive questo nella forma equivalente
int main(int argc, char* argv[]) {}
 
In particolare:
*in C, il main() non appartiene ad alcuna classe e, quindi, non può essere invocato su un oggetto. In Java, la cosa più vicina ad una funzione è un metodo statico (che non può essere invocato su un oggetto specifico).
*se in C un char* rappresenta una stringa, un char*[] è un array di stringhe; in Java gli array portano sempre con sé l'indicazione della loro lunghezza, per cui il valore argc può essere ottenuto semplicemente scrivendo args.length;
*il valore int di ritorno corrisponde al valore passato al metodo System.exit() (0 nel caso in cui il programma termini con la semplice terminazione di tutti i thread non-daemon).
 
=== Come definire un metodo ===