domingo, 20 de septiembre de 2009

Saludos compañeros y bienvenidos a mi nuevo artículo de Acerca de Java y, como lo prometido es deuda aquí van las primeras tres preguntas de Java:

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

A.- Se imprimer: "Valor de y: 0"

B.- Se imprime: "Valor de y: 1"

C.- Se imprime: "Valor de y: 2"

D.- Se imprime: "Valor de y: 3"

E.- Error de compilación línea 19: No se ha inicializado out.

F.- Ninguna de las anteriores

2.- ¿Cuál será el resultado de compilar y ejecutar el siguiente código?



A.- Error de compilación: Línea 9: No se puede lanzar excepción una vez atrapada.

B.- Se imprime:
Ejecuto metodo 1
Excepcion metodo 1
Excepcion metodo 2

C.- Se imprime:
Ejecuto metodo 1
Excepcion metodo 1
Excepcion metodo 2
Final metodo 1

D.- Se imprime:

Ejecuto metodo 1

Excepcion metodo 1

Final metodo 1

Excepcion metodo 2


E.- Compila bien, pero lanza excepción en tiempo de ejecución.

3.- ¿Cuál será el resultado de compilar y ejecutar el siguiente código?

A.- Error de compilación.

B.- Se imprime:

Constructor Clase 1

Primer constructor Clase 2

Constructor Clase 1

Llamada String


C.- Se imprime:

Primer constructor Clase 2

Llamada String

D.- Se lanza Excepción en tiempo de ejecución.



Respuestas:

1.- La respuesta es F. Esto debido a que el compilador cree que pudiera no inicializarse la variable "ye" (y) antes de imprimirla. Si se ve bien el código podrá verse que existen bloques if else if, pero no hay una sentencia else que indique al compilador que de alguna manera va a entrar a inicializar y, es decir, no hay error lógico debido a que sabemos que la variable y va a inicializarse ya que i toma o un valor menor a cero, mayor a cero o igual, pero no se lo estamos indicando al compilador, si cambiamos la línea 15 con una sentencia else eliminamos el error de compilación. y se de esa forma podría imprimirse 2, pero el compilador tal como está escrito no lo interpreta así.

2.- La respuesta es D. Según el orden en que se ejecuta el código tenemos: en el método main, se llama al método 2, que intenta ejecutar el método 1, aquí se imprime como primera línea "Ejecuto metodo 1", luego se lanza la excepción que es atrapada por el mismo método, se imprime "Excepcion metodo 1", luego se ejecuta el bloque finally que imprime: "Final metodo 1". Luego, se lleva al control al método 2 con lo que se llama Limpieza de la Pila ya que la excepción lanzada en la línea 9 no puede ser atrapada por método 1. Por ello se atrapa la excepción en el método 2 y se imprime: "Excepcion metodo 2".


3.- La respuesta es A: Al crear un constructor que recibe un parámetro entero en la Clase1 se elimina el constructor por defecto que no recibe parámetros, por lo tanto al crear un constructor en la clase derivada (Clase2) se debe recordar que la primera sentencia es la llamada al constructor de la super clase, si hay un constructor que no recibe parámetros en la super clase la llamada es implícita super(), pero en este caso no hay constructor por defecto y por lo tanto debe llamarse explícitamente al constructor de la super clase super(int) en la linea 9 antes de la sentencia System.out.println al igual que en la linea 13. Por ello hay error de compilación en el código de la pregunta 3.

No hay comentarios: