2010-03-21 12 views
7

¿Debería haber algún orden específico en el que debería escribir lo siguiente para un método principal de Java?Java - public static void main()

public static void main()

En otras palabras, ¿puedo volver a barajar pública, estática, nula en cualquier orden?

¿Por qué o por qué no?

+24

que estás haciendo muchas de estas preguntas en una sucesión muy rápida. Le recomiendo leer la especificación del lenguaje Java (http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html) que responderá a muchas de estas preguntas. Algunos experimentos con tu compilador también serán útiles. –

+8

@John Feminella - Es agradable ver que alguien puede reconocer que el OP ha hecho muchas preguntas que son de carácter introductorio pero de alguna manera es capaz de resistir el impulso infantil de hacer comentarios sarcásticos y auto-importantes. Tu comentario fue elegante y útil - ¡bravo! –

+1

@ John: Gracias por la sugerencia. Lo haré. –

Respuesta

18

void es el tipo de devolución, por lo que debe ir al último. Los otros pueden mezclarse (ver section 8.4 of the Java Language Specification para más detalles sobre esto), pero por convención el modificador de acceso usualmente va antes que la mayoría de los otros modificadores de método, a excepción de las anotaciones que generalmente van primero (de nuevo, solo por convención).

+0

[JLS 8.4.3] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html # jls-8.4.3): * "Si aparecen dos o más modificadores de método (distintos) en una declaración de método, es habitual, aunque no obligatorio, que aparezcan en el orden consistente con lo que se muestra: "* Anotación' public' 'protected'' private' 'abstract'' static' 'final'' synchronized' 'native'' strictfp' – Andreas

1

En resumen, NO, no puede El nombre del método debe ir precedido inmediatamente del tipo de devolución del método. Forma parte de la firma del método. Sin embargo, tener el especificador de acceso primero es una convención.

1

La firma para las necesidades principales a ser:

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

Sin embargo, no existe el requisito de que un método sea sometida a otro método. Pueden estar en el orden que desees. Además, Java usa un mecanismo de dos pasos, de modo que incluso si usa algún otro método en su método "principal", ese método puede aparecer más adelante en el archivo. No hay ningún requisito para la declaración directa como en C y C++ debido a este enfoque multi-paso adoptado por Java.

Los modificadores public y static se pueden barajar; sin embargo, por convención, el modificador de acceso (público, privado, protegido) siempre se da primero, estático y/o final (si corresponde) se da a continuación, seguido por el tipo de retorno.

+0

Está confundido. Él está preguntando sobre el orden de "público" "estático" "vacío" y "principal" –

+0

@Kevin, sí, ya veo. Ahora he respondido a los dos. –

+0

Actually String [] también puede ser String ... – whiskeysierra

1

Podría haber probado fácilmente las distintas permutaciones para ver qué funciona y qué no. Por un lado, ninguno de ellos funcionará si no cambia main() a main(String[] args). Más allá de eso, public y static son modificadores que pueden vienen en cualquier orden, pero la mayoría de las convenciones de estilo de código tienen un orden prescrito para ellos de todos modos. El voiddebe estar antes del nombre del método, ya que es el tipo de devolución, y no un modificador.

3

Podemos escribir, podemos intercambiar static y public

static public void main(String args[]) 

static public void main(String... args) 

Sin embargo no se puede reorganizar el tipo de retorno con cualquier posición, por ejemplo,

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

y también

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

Pregunta rápida de java, ¿puedes hacer 'static public void main()' sin 'String args []' o 'String ... args' o eso generalmente se desaconseja? – hellyale

Cuestiones relacionadas