Preguntas complicadas de salida de Java

Pregunta 1: ¿Cuál será la salida del siguiente código:

public class A {
    public static void main(String[] args)
    {
        if (true)
            break;
    }
}

Opciones:

  • a) nada
  • b) error

Respuesta: b)
Razón del error : la instrucción Break solo se puede usar con loop o switch. Por lo tanto, el uso de la instrucción break with if provoca el error «break outside switch or loop».

Pregunta 2: ¿Cuál será la salida del siguiente código:

public class A {
    public static void main(String[] args)
    {
        System.out.println('j' + 'a' + 'v' + 'a');
    }
}

Opciones:

  • a) Java
  • b) Algo más (Aparte de la simple concatenación)

Respuesta: b) Algo más (Aparte de la concatenación simple)
Razón: «java» se imprimiría si se usan literales de string (entre comillas dobles), pero en la pregunta, dado que se usaron literales de caracteres, estos no se concatenarán. Por lo tanto, después de la ejecución del programa, se obtendrá una suma de cada valor ASCII (Unicode) equivalente del carácter.
Por lo tanto, la salida es 106 + 97 + 118 + 97 = 418

Pregunta 3: ¿Cuál será la salida del siguiente código:

public class A {
    public static void main(String[] args)
    {
        int $_ = 5;
    }
}

Opciones:

  • a) nada
  • b) error

Respuesta: a) Nada
Razón: Parece que $causará un error, pero no lo hará. En java, la regla del identificador dice que el identificador puede comenzar con cualquier alfabeto o guión bajo («_») o dólar («$») . Entonces la respuesta es Nada.

Pregunta 4: ¿Cuál será la salida del siguiente código:

public class Demo{
    public static void main(String[] arr){
        Integer num1 = 100;
        Integer num2 = 100;
        Integer num3 = 500;
        Integer num4 = 500;
          
        if(num1==num2){
            System.out.println("num1 == num2");
        }
        else{
            System.out.println("num1 != num2");
        }
        if(num3 == num4){
            System.out.println("num3 == num4");
        }
        else{
            System.out.println("num3 != num4");
        }
    }
}

Opciones:

  • a) num1 == num2
        num3 == num4
  • b) numero1 ==
        numero2 numero3 != numero4
  • c) numero1 !=
        numero2 numero3 == numero4
  • d)
        número1 != número2 número3 != número4

Respuesta: b)num1 == num2
                  num3 != num4
Motivo:  siempre pensamos que cada vez que se comparan dos referencias de objetos usando “==”, siempre se evalúa como “falso”. Pero aquí el almacenamiento en caché de enteros cambia los resultados. La clase Integer tiene un rango de almacenamiento en caché de -128 a 127. Cada vez que un número se encuentra entre este rango y se usa el encuadre automático, asigna la misma referencia. Es por eso que para el valor 100, tanto num1 como num2 tendrán la misma referencia, pero para el valor 500 (no en el rango de -128 a 127), num3 y num4 tendrán una referencia diferente.

Pregunta 5: ¿Cuál será la salida del siguiente código:

public class Demo{
    public static void main(String[] arr){
          
    }
    public static void main(String arr){
          
    }
}

Opciones:

  • a) nada
  • b) error

Respuesta: a) Nada
Razón: También podemos sobrecargar main(). Pero JVM siempre llamará a main() que tiene el argumento String[].

Más preguntas sobre la salida de Java

Publicación traducida automáticamente

Artículo escrito por Vishnu_Radhanpura 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 *