2010-05-27 9 views

Respuesta

18

Pertenece a una clase. Mire cualquier implementación de hello-world y sería claro para usted.

public static void main(String[] args) { 
    System.out.println("Hello World"); 
} 

no se compilará tal como está. Debe poner class HelloWorld { ... } alrededor, en cuyo caso puede decir que el método principal "pertenece" a la clase HelloWorld.

Sin embargo, ya que es estática, que no pertenece a ningún objeto en particular. Hay una diferencia importante entre las clases y los objetos con los que debe familiarizarse cuando trabaje con lenguajes orientados a objetos. Learning Java: Objects and Classes es un buen punto de partida.

+0

ahora lo entendí – billu

+4

+1, Buena captura - ¡parece que el problema fue la comprensión de 'clase' y 'objeto'! –

2

Cada línea de código Java (excepto importación/paquete) vive en una clase (o es una declaración de clase/interfaz). Lo mismo ocurre con main.

+5

¿Qué pasa con 'import' o' package'? ;-) –

+0

Editado. Gracias. – miku

+1

¿Qué hay de los comentarios? ;-) –

3

Sí. Cada método o campo debe pertenecer a una clase (o interfaz/enum).

1

En Java, cualquier aplicación debe tener el método main en cualquiera de las clases. Y tiene que ser exactamente de la fórmula:

Ver más in official lessons.

+1

Si cuenta una aplicación web como una aplicación, entonces eso no es cierto. Una aplicación web no necesita un método 'main'. –

+1

Pero para ejecutar su aplicación web, debe haberse ejecutado un método 'main()' ... simplemente no tiene que escribirlo. – Dolph

2

Si quiere decir si pertenece a todas las clases, ese no es el caso. Pertenece a la clase donde lo defines.

Pero cualquier clase puede tener un método estático main.

0

no es que ese método principal pertenece a cualquier clase específica que pertenece a esa clase en la que definimos el método principal. puede ser cualquier clase

1

Cualquier clase en java puede tener un vacío público principal principal (String [] args). La función principal que se declara dentro de una clase (como cualquier otro método estático) pertenece a la definición de clase, pero no a la instancia de instanciación.

Si va a crear un archivo JAR de una colección de clases, puede especificar qué clase dentro del JAR contiene el método principal de la aplicación en el META-INF/MANIFEST.MF utilizando el

Main-Class: fully qualified name of class (example: ie.mycode.MyApp) 

Cuando ejecute el comando

java -jar [your jar file] 

Mirará el manifiesto y comenzará a ejecutar el código especificado en el principal para el objeto de clase principal.

1

Como se ha mencionado antes, es parte de una clase, pero no cualquier clase

Si su clase en el la "unnammed" or "default" package, principal método que no será a call any other Java classes de esa clase inicial con su método principal().
Si bien puede funcionar, limitará considerablemente lo que realmente puede hacer dentro de ese método main.

así que no utiliza ningún clase (i; e; no uno en el paquete por defecto)

0

main es un método normal. La única convención es que Java puede usar este (y solo este) método para 'iniciar' una aplicación. Si pasas una clase a java.exe, intenta reflejar este método (¡por eso la firma del método es absolutamente estricta!) Y la invoca (si se encuentra). Esto, de hecho, 'iniciará una aplicación' (iaw: el primer hilo).

1

Debe pertenecer a una clase, como con cualquier método, y debe estar en la clase que desea ejecutar después de la compilación.

programas sólo pueden iniciar mediante la ejecución de una clase que tiene un método main (nota:. Esto es applicale para la mayoría de tipos de aplicaciones java applets, por ejemplo, funcionan de forma diferente)

0

Cuando tratamos de ejecutar una clase cuyos camino no es conocido por la JVM, a continuación, se produce un error/excepción algo parecido a continuación

Exception in thread main: classdefnotfound........ 

Si principal pertenece a la clase que estamos tratando de correr entonces por qué el error dice exception in thread main esto sólo puede suceder cuando un hilo principal se está ejecutando

1

El método principal en Java pertenece a una clase pero no a un objeto. Los objetos se crean en tiempo de ejecución. Por lo tanto, dado que el principal main() en Java es el punto de inicio en su aplicación, no hay forma de iniciar su aplicación desde un método específico de instancia. Es por eso que la palabra clave static tiene mucho sentido con el método principal. De hecho todas las partes de la declaración principal método tienen sentido cuando se piensa como el 'JVM' y la imagen de lo que hace el método principal (inicia la aplicación):

  • public, ya que este método debe ser accesible por el jvm (no escrito por usted).
  • static, lo que implica que se puede acceder a este método sin tener un objeto (porque su representación nunca cambia), pero aquí la lógica es fácil de entender si piensas como el jvm nuevamente; "No tengo ningún objeto para crear (instanciar) objetos, por lo que necesito un método estático para iniciar la aplicación, ya que simplemente no hay ninguna forma lógica de obtener un método específico de instancia todavía, ya que no tengo nada arriba. aún para crear objetos ".
  • void Este método no puede devolver nada lógicamente porque aún no hay nada para devolver nada. Es el punto de inicio de la aplicación.
  • main Soy el método principal ya que sin mí no tendrá una aplicación.
  • String[] args Envíame datos que quizás te puedan resultar útiles para mi startup.
Cuestiones relacionadas