lunes, 30 de noviembre de 2009

Tres preguntas variadas

1.- Cuál es el resultado de compilar y ejecutar el siguiente código?



[A].- Imprime CAMain
[B].- Imprime ABCAMain
[C].- Imprime BCAMain
[D].- Imprime CBAAMain
[E].- Error de compilación
[F].- Excepcion en la ejecución


2.- Cual es el resultado al compilar y ejecutar el siguiente código?



[A].- 0123
[B].- 13
[C].- 1234
[D].- Error de compilación
[E].- Excepción en tiempo de ejecución

3.- Cual es el resultado al compilar y ejecutar el siguiente código?

[A].- Se imprime intenta, atrapa, finalmente y luego se lanza excepcion.
[B].- Error de compilación. Método main no debe lanzar (throws) Excepciones.
[C].- Error de compilación linea 17. No se puede lanzar excepcion en bloque finally.
[D].-Ninguna de las anteriores.


Respuestas:

1.- [C]: Debido a que cuando se crea el objeto C en la línea 19, se llama a los constructores por defecto de A, B y C, pero el constructor de A no hace nada (constructor por defecto), el método A que aparece allí es un método de clase ya que devuelve "void" (no es un constructor ya que tiene la palabra void), entonces al invocarse el constructor B se imprime B, luego se imprime C que es el constructor de C, y luego se invoca al mátodo A en la línea 20 por lo que se imprime A, para termina se imprime Main.

2.- [A]: Debido a que a es "true" esto hace que se entre en la estructura if sin verificar la segunda condición, es decir (++x) > 0. Por lo tanto se imprimen los valores que trae x por defecto del ciclo for.

3.- [D].- Como e1 = e está en una estructura catch el compilador no tiene la garantía de que esta sentencia se ejecute y por lo tanto se lanza una excepción en esta línea ya que el compilador no tiene la garantía que e1 sea inicializada.

No hay comentarios: