¿El Java crea internamente el objeto de la clase que está llevando a cabo el método principal?

Desbordamiento de pila :

Como sabemos que si queremos crear una objectde la classque tenemos que hacer algo:

class MyClass{
// ...
}

Y para crear la objectque hacemos:

MyClass MyObj = new MyClass();

Ahora bien, si queremos crear un programa en Java que necesitamos tener un mainmétodo dentro de la classy que classdeberí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 MyFileclase también será creado internamente por javacuando este programa se ejecuta con el fin de iniciar la ejecución del archivo de Java mediante una llamada al mainmétodo o lo hace llama al mainmétodo estáticamente como:

MyFile.main(String[] args);

¿Y cuál será el caso si tengo la clase (s) en la MyFileclase 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 javainternamente crea el objeto de la MyFileclase? ¿Qué acciones javallevará a cabo en este tipo de situaciones con el fin de ejecutar el programa, tanto con la ayuda del mainmétodo y, así como también para cargar las otras cosas antes y después del mainmétodo? ¿Cuáles serán las acciones realizadas por el javainterior en estas situaciones?

Jon Skeet:

Sin instancia de la clase se crea automáticamente cuando se inicia la JVM. El mainmé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 mainmé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 .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223121&siteId=1
Recomendado
Clasificación