2010-03-21 34 views
7

In caso di ordine specifico in cui dovrei scrivere quanto segue per un metodo principale Java?Java - public static void main()

public static void main()

In altre parole, posso rimescolamento pubblico, statico, vuoto in qualsiasi ordine?

Perché o perché no?

+24

si sta chiedendo un sacco di queste domande in molto rapida successione. Vi incoraggio a leggere le specifiche del linguaggio Java (http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html) che risponderanno a molte di queste richieste. Sarà utile anche qualche sperimentazione con il compilatore. –

+8

@John Feminella - È bello vedere che qualcuno può riconoscere che l'OP ha posto molte domande di natura introduttiva, ma in qualche modo è in grado di sopportare l'impulso infantile di fare commenti snervanti e auto-importanti. Il tuo commento è stato di classe e utile - bravo! –

+1

@ John: Grazie per il suggerimento. Lo faremo. –

risposta

18

void è il tipo di reso, quindi deve durare. Gli altri possono essere mescolati (vedi section 8.4 of the Java Language Specification per maggiori dettagli su questo), ma per convenzione il modificatore di accesso di solito va prima della maggior parte degli altri modificatori di metodo, eccetto per le annotazioni che di solito vanno prima (di nuovo, solo per convenzione).

+0

[JLS 8.4.3] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html # jls-8.4.3): * "Se due o più modificatori del metodo (distinti) compaiono in una dichiarazione di metodo, è consueto, sebbene non richiesto, che appaiono nell'ordine coerente con quello mostrato: "* Annotazione' public' 'protected'' private' 'abstract'' static' 'final'' synchronized'' native' 'strictfp' – Andreas

1

In breve, NO, non è possibile Il nome del metodo deve essere immediatamente preceduto dal tipo restituito del metodo. Fa parte della firma del metodo. Tuttavia, avere lo specificatore di accesso è la convenzione.

1

La firma per esigenze principali da:

 
public static void main(String[] args){ 
    // Insert code here 
} 

Tuttavia, non v'è alcun requisito che un metodo essere sottoposto un altro metodo. Possono essere in qualsiasi ordine tu voglia. Inoltre, Java utilizza un meccanismo a due passaggi in modo che anche se si utilizza qualche altro metodo nel proprio metodo "principale", tale metodo possa effettivamente apparire in un secondo momento nel file. Non vi è alcun obbligo di forward statement come in C e C++ a causa di questo approccio multi-pass adottato da Java.

I modificatori pubblici e statici possono essere mescolati; tuttavia, per convenzione, il modificatore di accesso (pubblico, privato, protetto) viene sempre assegnato per primo, statico e/o finale (se applicabile) vengono forniti successivamente, seguito dal tipo di ritorno.

+0

Sei confuso. Sta chiedendo l'ordine di "pubblico" "statico" "vuoto" e "principale" –

+0

@Kevin, sì, capisco. Ora ho risposto a entrambi. –

+0

In realtà String [] può anche essere String ... – whiskeysierra

1

Si potrebbe facilmente provare le varie permutazioni per vedere cosa funziona e cosa non funziona. Per prima cosa, nessuno di essi funzionerà se non si modifica main() in main(String[] args). Oltre a questo, public e static sono modificatori che possono venire in qualsiasi ordine, ma la maggior parte delle convenzioni di stile del codice hanno un ordine prescritto per loro comunque. Il voiddeve essere direttamente prima del nome del metodo, poiché è il tipo restituito e non un modificatore.

3

Possiamo scrivere, siamo in grado di scambiare static e public

static public void main(String args[]) 

static public void main(String... args) 

Tuttavia non è possibile rimescolare il tipo di ritorno con qualsiasi posizione, per esempio

public void static main(String[] args) // is wrong 

e anche

static void public main(String[] args) // is also wrong 
+0

Domanda java veloce, si può fare 'static public void main()' senza 'String args []' o 'String ... args 'o è generalmente scoraggiato? – hellyale

Problemi correlati