Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > duda con método main

Hola buenas tardes, tenía una duda que no consigo encontrar respuesta.

Resulta que hoy hice un examen de programación orientada a objetos y tenía una pregunta en la que me preguntaban cual es la forma correcta de declarar el método main.

me daban cuatro opciones

a) public void main (String[] args)
b) static public void main (String[] args)
c) static public String main (String args[])
d) public static void main (String args[])

según dos libros diferentes tengo dos respuestas, puesto que en el libro COMO PROGRAMAR EN JAVA de Paul J. Deitel en la pag 31 usan el método d) y en el libro de programación orientada a objetos con java de David J. Barnes - Michael Kölling, concretamente en el apendice E, en la página 488 usan la public static void main (String [] args), no encontrandose esta entre las opciones disponibles.

si alguién me pudiera aclarar cual es la opción correcta estaría muy agradecido

un saludo

Rubén

septiembre 5, 2015 | Unregistered CommenterRubén

Las dos opciones son correctas, tanto:
public static void main(String args[]){
...
}

como:
public static void main(String[] args){
...
}

Simplemente indica que ese parámetro es un array de string. Igualmente, cuando se declara un array, es lo mismo decir:

int[] arrayNumeros;

que:
int arrayNumeros[];

Los corchetes se permiten tanto detrás del tipo, como detrás del identificador, y es lo mismo, ambas expresiones son equivalentes y lo que indican es eso que estas declarando un objeto de tipo array, no existe ninguna diferencia entre ambas expresiones. Espero haber aclarado tu duda. Un saludo.

septiembre 5, 2015 | Registered Commenterloderain

Yo creo que la trampa de la pregunta está entre las opciones b) y d), y sobre todo en si public puede ir detrás de static. Acabo de comprobar en NetBeans que sí y, en ese caso, es más correcta la b) que la d), aunque las dos compilan y son iguales a efectos prácticos.

Que yo recuerde, no hay ninguna recomendación específica sobre el orden en el que se indican los modificadores de un método; al menos en el JLS (Java Language Specification) no se dice que sea mejor escribir public static que static public. Lo que pasa es que estamos acostumbrados a usar siempre ese orden, como estamos acostumbrados a escribir siempre el modificador de visibilidad incluso en interfaces, cuando no es necesario porque, por definición, cualquier método de un interface siempre es public y abstract.

En cambio, sí que se recomienda escribir String[] args en lugar de String args[], porque de la primera forma se enfatiza el hecho de que tenemos una variable cuyo tipo es array de Strings, en lugar de sugerir que tenemos un array de variables de tipo String. Podéis ver los ejemplos en el JLS; un poco más arriba en esa misma página veréis que se habla siempre de T[] siendo T el tipo.

septiembre 8, 2015 | Registered Commenterrickiees