studio significa que expected error java

java - significa - identifier expected c#



¿Por qué main() en java void? (4)

En el caso de los lenguajes con una sintaxis similar a C, declaramos que el método main () devuelve un valor int o float (o void). ¿Es posible declarar un tipo de devolución no nulo de main () en Java? Si no, ¿por qué no? ¿Esto significa que un programa Java no devuelve ningún valor al sistema operativo?


El método main() debe tener un tipo de retorno void . De la Especificación del lenguaje Java en "Ejecución - §12.1.4 máquina virtual" ( §12.1.4 ):

El método main debe declararse public , static y void . Debe aceptar un solo argumento que sea una matriz de cadenas.

Continúa para describir cuándo sale un programa en "Ejecución - Salida del programa" ( §12.8 ):

Un programa termina toda su actividad y se cierra cuando ocurre una de estas dos cosas:

  • Todos los hilos que no son hilos daemon terminan.
  • Algunos subprocesos invocan el método de exit de clase Runtime o clase System y la operación de salida no está prohibida por el administrador de seguridad.

En otras palabras, el programa puede salir antes o después de que el método main finalice; un valor de retorno de main tendría sentido. Si desea que el programa devuelva un código de estado, llame a uno de los siguientes métodos (tenga en cuenta que los tres métodos nunca regresan normalmente):

De los tres, System.exit() es la forma convencional y más conveniente de finalizar la JVM.


El motivo por el que el método main ha sido void como tipo de retorno es que una vez que termina el main , no significa necesariamente que haya terminado todo el programa. Si main genera nuevos hilos, estos hilos pueden mantener el programa en ejecución. El tipo de retorno de main no tiene mucho sentido en este punto.

Por ejemplo, esto es muy común en las aplicaciones Swing, donde el método main generalmente inicia una GUI en el hilo Swing, y luego termina main ... pero el programa todavía se está ejecutando.


Puede devolver un int con System.exit ().

Devolver algo que no sea un entero no tiene mucho sentido, ya que el sistema operativo espera un número entero. En caso de que no se devuelva nada, el valor predeterminado es 0, lo que significa que está OK. Otros valores generalmente se utilizan para señalar errores o condiciones especiales.


This es una discusión interesante sobre velocityreviews sobre el mismo tema:

Realce:

Por cierto, esto se considera un estilo malo en C y C ++ solo porque es la firma incorrecta para main, no por ninguna razón universal independiente de los lenguajes de programación. Es una de esas cosas que realmente no se supone que funcione, pero que podrían afectar a su implementación.

En Java, la razón por la cual el retorno principal es vacío son los hilos. C y C ++ fueron diseñados como lenguajes antes de que el multihilo sea una técnica ampliamente conocida, y ambos tenían hilos injertados en una fecha posterior. Java fue diseñado desde el principio para ser un entorno multiproceso, y francamente, sería inusual escribir cualquier aplicación Java no trivial que no use más de un hilo. Entonces la idea de que un programa se mueve linealmente desde el comienzo hasta el final de main está un poco desactualizada.

escrito por

www.designacourse.com La forma más fácil de entrenar a cualquiera ... en cualquier lugar. Chris Smith - Desarrollador de software principal / Entrenador técnico MindIQ Corporation