Salida del programa Java | conjunto 11

Prediga la salida de los siguientes programas Java:

Pregunta 1 :

public class Base
{
    private int data;
  
    public Base()
    {
        data = 5;
    }
  
    public int getData()
    {
        return this.data;
    }
}
  
class Derived extends Base
{
    private int data;
    public Derived()
    {
        data = 6;
    }
    private int getData()
    {
        return data;
    }
  
    public static void main(String[] args)
    {
        Derived myData = new Derived();
        System.out.println(myData.getData());
    }
}

a) 6
b) 5
c) Error de tiempo de compilación
d) Error de tiempo de ejecución

Respuesta (c)
Explicación: Al anular un método de superclase, la declaración del método en la subclase no puede ser más restrictiva que la declarada en la superclase .

Pregunta 2 :

public class Test
{
    private int data = 5;
  
    public int getData()
    {
        return this.data;
    }
    public int getData(int value)
    {
        return (data+1);
    }
    public int getData(int... value)
    {
        return  (data+2);
    }
  
    public static void main(String[] args)
    {
        Test temp = new Test();
        System.out.println(temp.getData(7, 8, 12));
    }
}

a) Tiempo de compilación o error de tiempo de ejecución
b) 8
c) 10
d) 7

Respuesta (d)
Explicación: (int… valores) se pasa como parámetro a un método cuando no conoce el número de parámetros de entrada pero sabe el tipo de parámetro (en este caso es int). Cuando se crea un nuevo objeto en el método principal, los datos variables se inicializan en 5. Una llamada al método getData() con atributos (7, 8, 12), realiza una llamada al tercer método getData(), que incrementa el valor de la variable de datos por 2 y devuelve 7.

Pregunta 3:

public class Base
{
    private int multiplier(int data)
    {
        return data*5;
    }
}
  
class Derived extends Base
{
    private static int data;
    public Derived()
    {
        data = 25;
    }
    public static void main(String[] args)
    {
        Base temp = new Derived();
        System.out.println(temp.multiplier(data));
    }
}

a) 125
b) 25
c) Error de tiempo de ejecución
d) Error de tiempo de compilación

Respuesta (d)
Explicación: dado que el método multiplicador está marcado como privado, no se hereda y, por lo tanto, no es visible para Derivado.

Pregunta 4:
¿Cuál de las siguientes es FALSA sobre el bloque finalmente?
a) Para cada bloque de prueba, solo puede haber 1 bloque de finalmente.
b) finalmente, el bloque no se ejecutará si el programa sale llamando a System.exit();
c) Si no se maneja una excepción en la instrucción catch, antes de finalizar el programa, JVM ejecuta el bloque finalmente
d) el bloque finalmente contiene un segmento de código importante y, por lo tanto, el código dentro del bloque finalmente se ejecuta con/sin la presencia del bloque try en Java código.

Respuesta (d)
Explicación: La declaración (d) es falsa porque finalmente los bloques pueden existir solo si tiene éxito en el intento o en un bloque de captura. El uso de un bloque de finalización sin un bloque de prueba daría un error de tiempo de compilación.

Pregunta 5:

import java.io.IOException;
import java.util.EmptyStackException;
  
public class newclass
{
    public static void main(String[] args)
    {
        try
        {
            System.out.printf("%d", 1);
            throw(new Exception());
        }
        catch(IOException e)
        {
            System.out.printf("%d", 2);
        }
        catch(EmptyStackException e)
        {
            System.out.printf("%d", 3);
        }
        catch(Exception e)
        {
            System.out.printf("%d", 4);
        }
        finally
        {
            System.out.printf("%d", 5);
        }
    }
}

a) 12345
b) 15
c) 135
d) 145

Respuesta (d)
Explicación: Las instrucciones catch están escritas en el orden: más específico a más general. En el código anterior, se lanza una nueva excepción de tipo Exception. Primero, el código salta al primer bloque catch para buscar el controlador de excepciones. Pero dado que la IOException no es
del mismo tipo, se mueve hacia abajo al segundo bloque catch y finalmente al tercero, donde
se captura la excepción y se imprime 4. Por tanto, la respuesta es 145, ya que el orden
de ejecución en términos de bloques es: try->catch->finally.

Pregunta 6:

public class javaclass
{
    static
    {
        System.out.printf("%d", 1);
    }
    static
    {
        System.out.printf("%d", 2);
    }
    static
    {
        System.out.printf("%d", 3);
    }
    private static int myMethod()
    {
        return 4;
    }
    private int function()
    {
        return 5;
    }
  
    public static void main(String[] args)
    {
        System.out.printf("%d", (new javaclass()).function() + myMethod());
    }
}

a) 123
b) 45
c) 12345
d) 1239

Respuesta (d)
Explicación: los bloques estáticos en Java se ejecutan incluso antes de que el compilador realice la llamada a main. En el método principal, se crea un nuevo objeto de javaclass y se llama a su método function() que devuelve 5 y el método estático myMethod() devuelve 4, es decir, 4+5 = 9. Por lo tanto, la salida del programa es 1239, porque 123 se imprime en la consola incluso antes de que se ejecute el método principal y el método principal en ejecución devuelve 9.

Este artículo es una contribución de Mayank . 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 *