Salida del programa Java | conjunto 9

Nivel de dificultad : Intermedio

Prediga la salida de los siguientes programas Java.

Programa 1:

class Gfg
{
    // constructor
    Gfg()
    {
        System.out.println("Geeksforgeeks");
    }
      
    static Gfg a = new Gfg(); //line 8
  
    public static void main(String args[])
    {
        Gfg b; //line 12
        b = new Gfg();
    }
}

Producción:

Geeksforgeeks
Geeksforgeeks

Explicación:
sabemos que las variables estáticas se llaman cuando se carga una clase y las variables estáticas se llaman solo una vez. Ahora la línea 13 da como resultado la creación de un objeto que a su vez llama al constructor y «Geeksforgeeks» se imprime por segunda vez.
Si en la línea 8 no se hubiera utilizado la variable estática, el objeto se habría llamado de forma recursiva infinitamente, lo que provocaría un error de StackOverFlow. Vea esto para una ejecución de muestra.

Programa 2:

class Gfg
{
    static int num;
    static String mystr;
  
    // constructor
    Gfg()
    {
        num = 100;
        mystr = "Constructor";
    }
  
    // First Static block
    static
    {
        System.out.println("Static Block 1");
        num = 68;
        mystr = "Block1";
    }
  
    // Second static block
    static
    {
        System.out.println("Static Block 2");
        num = 98;
        mystr = "Block2";
    }
  
    public static void main(String args[])
    {
        Gfg a = new Gfg();
        System.out.println("Value of num = " + a.num);
        System.out.println("Value of mystr = " + a.mystr);
    }
}

Producción:

Static Block 1
Static Block 2
Value of num = 100
Value of mystr = Constructor

Explicación:
el bloque estático se ejecuta cuando la clase se carga en la memoria. Una clase puede tener varios bloques estáticos, que se ejecutan en la misma secuencia en la que se han escrito en el programa.
Nota : los métodos estáticos pueden acceder a las variables de clase sin usar el objeto de la clase. Dado que se llama al constructor cuando se crea una nueva instancia, primero se llama a los bloques estáticos y luego se llama al constructor. Si hubiéramos ejecutado el mismo programa sin usar objeto, no se habría llamado al constructor.

Programa 3:

class superClass
{
    final public int calc(int a, int b)
    {
        return 0;
    }
}
class subClass extends superClass
{
    public int calc(int a, int b)
    {
        return 1;
    }
}
public class Gfg
{
    public static void main(String args[])
    {
        subClass get = new subClass();
        System.out.println("x = " + get.calc(0, 1));
    }
}

Producción:

Compilation fails. 

Explicación:
el método calc() en la clase superClass es definitivo y, por lo tanto, no se puede anular.

Programa 4:

public class Gfg
{
    public static void main(String[] args)
    {
        Integer a = 128, b = 128;
        System.out.println(a == b);
  
        Integer c = 100, d = 100;
        System.out.println(c == d);
    }
}

Producción:

false
true

Explicación: En el código fuente del objeto Integer encontraremos un método ‘valueOf’ en el que podemos ver que el rango del objeto Integer va desde IntegerCache.low(-128) hasta IntegerCache.high(127). Por lo tanto, los números por encima de 127 no darán el resultado esperado. El rango de IntegerCache se puede observar desde el código fuente de la clase IntegerCache. Consulte esto para obtener más detalles.

Este artículo es una contribución de Pratik Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *