Como sabemos que si queremos crear una object
de la class
que tenemos que hacer algo:
class MyClass{
// ...
}
Y para crear la object
que hacemos:
MyClass MyObj = new MyClass();
Ahora bien, si queremos crear un programa en Java que necesitamos tener un main
método dentro de la class
y que class
deberíamos tener el mismo nombre que el nombre del archivo.
Por ejemplo:
// file MyFile.java
public class MyFile{
public static void main(String[] args){
// ...
}
}
Ahora la cuestión es que si el objeto de la MyFile
clase también será creado internamente por java
cuando este programa se ejecuta con el fin de iniciar la ejecución del archivo de Java mediante una llamada al main
método o lo hace llama al main
método estáticamente como:
MyFile.main(String[] args);
¿Y cuál será el caso si tengo la clase (s) en la MyFile
clase como:
public class MyFile{
class HelloWorld{
// ...
}
public static void main(String[] args){
// ...
}
}
O tener propiedades no estáticos y métodos como:
public class MyFile{
int x = 10;
public void MyWorld(){
// ...
}
public static void main(String[] args){
// ...
}
int y = 10;
public void ByeWorld(){
// ...
}
}
Etc etc.
Ahora, lo que será el escenario? Se java
internamente crea el objeto de la MyFile
clase? ¿Qué acciones java
llevará a cabo en este tipo de situaciones con el fin de ejecutar el programa, tanto con la ayuda del main
método y, así como también para cargar las otras cosas antes y después del main
método? ¿Cuáles serán las acciones realizadas por el java
interior en estas situaciones?
Sin instancia de la clase se crea automáticamente cuando se inicia la JVM. El main
método se invoca simplemente estáticamente - es por eso que tiene que ser estático en el primer lugar.
La clase está inicializado , por lo que si usted tiene un inicializador estático, que será ejecutado antes de que el main
método, pero se construirá ninguna instancia de la clase. No hay necesidad de hacerlo, y sería introducir complicaciones innecesarias. (¿Qué se puede esperar que suceda si sólo se incluyeron los constructores con parámetros, por ejemplo?)
Para más detalles de inicio de la JVM, véase el capítulo 12 de la especificación del lenguaje Java .