2011-02-07 19 views
6
public static void main(String arg[]) 

En la declaración anterior, que puede utilizar una matriz int en lugar de la matriz String? ¿Qué sucede si no pongo nada entre paréntesis, es decir, si uso un paréntesis vacío?java pregunta básica

Respuesta

2

No estoy seguro de lo que quiere decir con Int array pero no, no puede. La firma del método debe coincidir exactamente con public static void main(String[] args). Lo único que puedes cambiar es el nombre del argumento. El nombre del método, el tipo de argumento, la visibilidad (público vs privado, etc.) es lo que el tiempo de ejecución utiliza para encontrar el método en sí mismo. Si no se ajusta a esa firma, no es un método de punto de entrada y, por lo tanto, no se llamará cuando se inicie la aplicación.

Sin embargo, debe tenerse en cuenta que lo que está sugiriendo se compilará sin problemas. Los problemas no surgirán hasta que intente ejecutar la aplicación.

+0

Por matriz Int, quise decir una matriz de enteros. – pradeep

+0

@rajivpradeep, pensé que eso es lo que querías decir, pero no, no puedes. Debe ser una cadena []. cuando lo piensas, eso tiene sentido. El conjunto de parámetros será proporcionado por el shell y no sabe cómo convertir cadenas en ints. Todo lo que entiende es Strings. Si desea una matriz int, debe convertir de cadena a entero utilizando 'Integer.parseInt()' –

+0

Gracias chris por su respuesta. Gracias – pradeep

1

El compilador aceptará pero el tiempo de ejecución le dará un NoSuchMethodError

5

Al compilar el código con los cambios que usted ha mencionado, se compilará correctamente. Cuando intenta ejecutar, JVM comprueba el método principal con String array como argumentos. Como no hay un método principal con String array como argumento, su código no se ejecutará correctamente y arroja NoSuchMethodError.

2

El código se compilará pero no se ejecutará.

El motivo de la cadena [] es para que las personas puedan pasar parámetros a través de la línea de comandos.

0

El método principal es el punto de entrada para la aplicación java. Si nos fijamos en el java language specification, que establece específicamente:

El principal método debe ser declarada pública, estática, y sin efecto. Debe aceptar un único argumento que es una matriz de cadenas. Este método puede ser declarado como ya sea

o

public static void main(String... args) 

El String [] matriz pasada en contiene los argumentos de línea de comandos que se han transmitido en por lo puesto en marcha la aplicación. Luego puede leerlos y convertirlos cuando lo necesite.

0

Si usted está mirando para conseguir números en lugar de cadenas, utilizar este enfoque

public static void main(String[] args) { 

    int[] numbers = new int[args.length]; 
    for(int i = 0; i < args.length; i++) numbers[i] = Integer.parseInt(args[i]); 

} 

Manejo de excepciones es el ejercicio para el lector.

Otras respuestas explican bastante bien sus otros problemas del 'por qué'.

3

No, creo que no se puede usar int array en lugar de String array.que el sistema operativo usa el argumento int para pasar un valor entero que especifica el número de argumentos de línea de comandos ingresados ​​por el usuario. entonces debes seguir el siguiente patrón.

public static void main(String[] args) 

public static void main(String args[]) 
0

No, produce un error de ejecución como método principal que no se encuentran en la prueba de clase, defina el método principal como: void Main (args String []) public static

JAVA es más específica sobre la firma del método principal. Considera su método como un método general en una clase.

+0

¿Qué diferencia esta respuesta con las otras respuestas que ya están aquí? –