Nota: Si deseas ver mejor la imagen puedes hacer click sobre ella.
1.- ¿Cuál es el resultado de compilar y ejecutar el siguiente código?
[A].-Error de compilación en línea 6. El constructor no puede tener valor de retorno.
[B].-El programa compila pero lanza un error en tiempo de ejecución en línea 13, ya que se intenta cambiar un valor constante.
[C].-Se imprime 35
[D].-Se imprime 55
[E].- Error de compilación en línea 13, mala llamada al constructor.
[F].-Ninguna de las anteriores
2.- ¿Cuál es el resultado de compilar y ejecutar el siguiente código?
[A].- El programa compila y ejecuta sin problemas. No se genera salida.
[B].- ClassCastException en tiempo de ejecución.
[C].- Error en la compilación.
[D].-Ninguna de las anteriores.
3.- ¿Qué resulta al compilar y ejecutar el siguiente código?. Suponga que las aserciones están ensambladas:
[A].- Error de compilación.
[B].- Sólo se imprime ABC.
[C].- Se imprime ABC y se lanza AsertionException.
[D].- Se impime ABC y se lanza AsertionError.
4.- ¿Cuál es la salida generada al ejecutar el siguiente código?
[A].- 123
000
123
[B].- 000
123
123
[C].- 123
123
000
[D].- 101202603
123
123
[E].- 000
123
[F].- 123
101202603
123
Respuestas Correctas:
1.- [F]:
Sucede un error de compilación, pero en la línea 7 debido a que en un método no constructor no puede cambiarse el valor de una constante (final) en este caso la variable final VALOR. La A es incorrecta ya que debido a que el método public int Ejecutable devuelve un entero se convierte en un método no constructor. B, C y D es incorrecta debido a que el sistema no compila.
2.- [C]:
No se puede castear dos clases que tengan el mismo padre, podría crearse una instancia de la clase padre llamado p, podriamos hacer p = (Hija2) h2; o h2 = (Padre) p; pero entre dos clases que tienen el mismo padre no puede haber un casteo.
3.- [A]:
Hay error de compilación debido a que en el método f la sentencia default del switch no tiene valor de retorno y tampoco lanza una exception. La aserción no es suficiente para el compilador.
4.- [B]:
Hagamos una traza del programa: Primero se ejecuta el método main que realiza una instancia de PruebaConstructor( ). Este constructor hace una llamanda al constructor con tres enteros pasando los valores 101, 202 y 603, a su vez este llama al método inicializar pasandole los valores recibidos. Al llegar al método inicializar se hace la primera impresión llamando a this.uno, this.dos y this.tres pero hasta este momento no han sido inicializados y por eso imprimen sus valores por defecto (tres ceros se imprimen en la línea 14). Luego en las líneas 15, 16 y 17, this.uno toma el valor 1, this.dos toma 2, y this.tres se le asigna 3, debido al operador ternario. Estos se imprimen en la línea 18, luego de esto se retorna el control a PruebaConstructor que recibe tres enteros, aquí no hay mas sentencias, se retorna a PruebaConstructor( ) que imprime 123 debido a la línea 6. Resultado respuesta B.
sábado, 31 de octubre de 2009
domingo, 25 de octubre de 2009
1. ¿Cual de las siguientes opciones son los códigos que deben colocarse en las líneas 3 y 10 respectivamente, para que la salida imprima "Buena Opcion"?
[A].- this.Interna.metodo1(); y this.Externa.metodo2();
[B].- new Interna().metodo1(); y new Externa().metodo2();
[C].- new Interna().metodo1(); y Externa.this.metodo2();
[D].- Interna.this.metodo1(); y Externa.this.metodo2();
[E].- this.Interna.metodo1(); y new Externa().metodo2();
[F].- new Interna().metodo1(); y this.Externa.metodo2();
2.- ¿Cuál es el resultado de compilar y correr el siguiente código?
[A].- imprime enteroCorto100
[B].- imprime puntoFlotante100
[C].- imprime doblePrecision100
[D].- Error de compilación. No hay constructor para entero.
[E].- Error en tiempo de Ejecución.
3.- ¿Cuál es la salida al compilar y ejecutar el siguiente código?
[A].- 0
[B].- 3
[C].- 4
[D].- 5
[E].- 6
[F].- Error de compilacion.
Respuestas Correctas:
1.-Respuesta correcta: C.
La opción A es incorrecta ya que Interna no es un campo de Externa ni viceversa, por lo tanto tampoco lo son las opciones E y F. La opción B, aunque compila lanza un StackOverflowError, debido a que en el constructor de Externa creo una instancia de Interna y dentro de Interna llama un constructor de Externa.
La opción D no es correcta ya que Interna.this.metodo1() se usa sólo si estoy dentro de una clase interna para llamar al método de la clase externa.
La opción correcta es la C, debido a que creo una nueva instancia de Interna en la clase externa y luego hago una llamada al metodo2 sin crear una nueva instancia.
2.-Respuesta correcta: B.
La respuesta correcta es B debido a lo que se llama promoción de argumentos, donde el tipo de cada valor en una expresión se promueve a su tipo "más alto" en la expresión.
las reglas de promoción son:
short o char --> int --> long --> float --> double:
Por lo tanto como no hay constuctor para int ni para long, entonces el valor es promovido hasta float porque este tiene constructor.
3.- Respuesta correcta: F.
La sentencia this() para llamar a otro constructor dentro de un constructor, debe ser la primera sentencia del mismo.
[A].- this.Interna.metodo1(); y this.Externa.metodo2();
[B].- new Interna().metodo1(); y new Externa().metodo2();
[C].- new Interna().metodo1(); y Externa.this.metodo2();
[D].- Interna.this.metodo1(); y Externa.this.metodo2();
[E].- this.Interna.metodo1(); y new Externa().metodo2();
[F].- new Interna().metodo1(); y this.Externa.metodo2();
2.- ¿Cuál es el resultado de compilar y correr el siguiente código?
[A].- imprime enteroCorto100
[B].- imprime puntoFlotante100
[C].- imprime doblePrecision100
[D].- Error de compilación. No hay constructor para entero.
[E].- Error en tiempo de Ejecución.
3.- ¿Cuál es la salida al compilar y ejecutar el siguiente código?
[A].- 0
[B].- 3
[C].- 4
[D].- 5
[E].- 6
[F].- Error de compilacion.
Respuestas Correctas:
1.-Respuesta correcta: C.
La opción A es incorrecta ya que Interna no es un campo de Externa ni viceversa, por lo tanto tampoco lo son las opciones E y F. La opción B, aunque compila lanza un StackOverflowError, debido a que en el constructor de Externa creo una instancia de Interna y dentro de Interna llama un constructor de Externa.
La opción D no es correcta ya que Interna.this.metodo1() se usa sólo si estoy dentro de una clase interna para llamar al método de la clase externa.
La opción correcta es la C, debido a que creo una nueva instancia de Interna en la clase externa y luego hago una llamada al metodo2 sin crear una nueva instancia.
2.-Respuesta correcta: B.
La respuesta correcta es B debido a lo que se llama promoción de argumentos, donde el tipo de cada valor en una expresión se promueve a su tipo "más alto" en la expresión.
las reglas de promoción son:
short o char --> int --> long --> float --> double:
Por lo tanto como no hay constuctor para int ni para long, entonces el valor es promovido hasta float porque este tiene constructor.
3.- Respuesta correcta: F.
La sentencia this() para llamar a otro constructor dentro de un constructor, debe ser la primera sentencia del mismo.
Suscribirse a:
Entradas (Atom)