Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nosferacento

Páginas: 1 ... 17 18 19 20 21 [22] 23
421
PREGUNTA: Estudia el código que se muestra a continuación. ¿Compila este código?

public class Preg15 {
    public void prueba () {
        try {
            int variableLocal = 55;
        } catch (ArithmeticException e) {
            System.out.println( variableLocal);
        }
        finally { }
    }
}


RESPUESTA: No, una variable local declarada dentro de un bloque try catch no es conocida ni en el catch ni en el finally. En resumen, si la variable está declarada fuera del bloque try, sí se puede usar en el catch o en el finally. Si está dentro del bloque try, nos saltará un error de compilación.

422
PREGUNTA: ¿Cuál sería el resultado de ejecutar el método goo?

public void goo() {
foo f = new foo();
System.out.println (f);
}
public class foo {
    String f = "22";
    public String toString() {
        return "44";
    }
    public foo() {}
}


RESPUESTA: Esta pregunta es un enunciado ininteligible, ya que no queda claro dónde está el método, y sin saber dónde está… De todas formas, se considera que hay que suponer que al no preguntar por la ejecución del código, sino del método, tenemos que considerar que estuviera dentro de la clase… Si el método estuviera dentro de la clase, sí compilaría, y el resultado de ejecutar el método sería: 44. Esto es así, porque en el println lo que se ejecuta es el método toString(). Y al tener sobreescrito el método toString() para que devuelva 44, esto es lo que obtenemos. A esta pregunta hay que reconocerle mérito: ole la mente brillante a la que se le ocurrió.


423
PREGUNTA: ¿Qué ocurre al ejecutar el siguiente código?

public void goo() {
foo f = new foo();
System.out.println (f);
}
public class foo {
    String f = "22";
    public String toString() {
        return "44";
    }
    public foo() {}
}


RESPUESTA: Error de compilación: un método no puede estar fuera de una clase como algo independiente.

424
Gracias chicos, creo que estoy un poco depre. Además han salido las notas del examen de septiembre y aparte de que los profesores han vuelto a tener una errata en los resultados del tipo test (al igual que ocurrió en el examen de junio), me han tumbado la asignatura. En fin, para el año que viene será. Yo para no perder el ritmo voy a seguir colgando aquí preguntas y respuestas de examen  :-\

425
Hola a todos ¿el tema resulta de interés o lo dejo? Díganme algo por favor para saber si resulta de interés  :-\

426
PREGUNTA: ¿Qué ocurre al ejecutar el siguiente código?

class Padre {}
class Hijo extends Padre {}
class Hijo2 extends Padre {}
public class CEx {
    public static void main (String [] args) {
        Padre p = new Padre(); 
        Hijo h = (Hijo) p;
    }
}


RESPUESTA: No sabemos si lo de (Hijo) p tiene algún doble sentido. El código compila, ya que el compilador no llega a conocer el tipo que almacena la variable p. En tiempo de ejecución, para hacer el casting Hijo h = (Hijo) p; sería necesario que p almacenara dinámicamente una variable tipo Hijo. Como no es el caso, salta un error en tiempo de ejecución tipo java.lang.ClassCastException: Padre cannot be cast to Hijo.
Este código sí compila y se ejecuta:

class Padre {}
class Hijo extends Padre {}
class Hijo2 extends Padre {}
public class Preg8CEx {
    public static void main (String [] args) {
        Padre p = new Hijo();
        Hijo h = (Hijo) p;
    }


427
PREGUNTA: ¿Qué se obtiene al ejecutar el siguiente código?

class Vehiculo {
    public void imprimirSonido() {
            System.out.print("Vehiculo");
        }
    }
    class Coche extends Vehiculo {
            public void imprimirSonido() {
                    System.out.print ("Bicicleta");
                }
     }
     class Bicicleta extends Vehiculo {
            public void imprimirSonido() {
                    System.out.print ("Bicicleta");
                }
            }
     public class Test {
            public static void main (String [] args) {
                Vehiculo v = new Coche();
                Bicicleta b = (Bicicleta) v;
                v.imprimirSonido();
                b.imprimirSonido();
            }
        }


RESPUESTA: El código compila, pero se produce una excepción en tiempo de ejecución. El error nos indica java.lang.ClassCastException: Coche cannot be cast to Bicicleta at Test.main(Test.java:22). Esto está relacionado con conversiones de tipo permitidas y no permitidas. Tanto coche como bicicleta heredan de vehiculo, podríamos decir que coche y bicicleta "son hermanos". El código compila porque un vehiculo podría contener una bicicleta (polimorfismo de vehiculo). Sin embargo, en tiempo de ejecución lo que realmente contiene v es un coche. El resultado, que se detecta un intento de conversión de lado a lado (entre hermanos) y nos salta el error en tiempo de ejecución.
Bueno, no sé si lo he explicado muy claro pero por lo menos lo he intentado.

428
PREGUNTA: ¿Qué se obtiene al ejecutar el siguiente código?
public class MiClase1 {
    private MiClase2 prueba;
    public void mostrarMiClase1 () {
        System.out.println (prueba);
    }
}
class MiClase2 {
    String soy2 = "Hola soy 2";
}


RESPUESTA: Obtenemos como salida por pantalla: null.
¿Por qué? Porque el atributo prueba, que es un objeto, no está inicializado, sino solo declarado.
Si lo inicializáramos con una declaración como private MiClase2 prueba = new MiClase2(); la salida por pantalla sería del tipo MiClase2@1428ea
¿Por qué? Porque estamos pidiendo la salida por pantalla de un objeto, y lo que nos sale es la referencia de memoria de dónde se encuentra alojado el objeto. Usando System.out.println (prueba.toString()); el resultado sería el mismo. Para rescatar el contenido “Hola soy 2” necesitaríamos un método get e invocar este método. Por ejemplo: public String getContenido() { return soy2; }, y en la otra clase System.out.println (prueba.getContenido());

429
PREGUNTA: Dado este fragmento de código, ¿cuál será su salida?

class Cantante { public static String cantar() { return "la"; } }
public class Tenor extends Cantante {
    public static String cantar () { return "fa"; }
        public static void main (String [] args ) {           
        Tenor t = new Tenor ();
        Cantante s = new Tenor ();
        System.out.println (t.cantar () + " " + s.cantar() );
    }
}


RESPUESTA: Do, re, mi, fa, sol… qué simpática la pregunta. Qué derroche de imaginación y simpatía. Veamos el fondo del asunto. Primera cuestión:
El fichero lleva el nombre de la clase pública. La otra clase no es conocida fuera del fichero.
Al crear un Tenor no ocurre nada puesto que no hay constructor ni campos.
El método cantar de Tenor es estático: esto significa que es un método de clase y que se puede invocar tanto sobre un objeto como sobre el nombre de la clase. Idem para el método cantar de Cantante.
Aunque parece que hay una sobreescritura de métodos, en realidad no la hay: un método estático no es sobreescribible y no funciona la ligadura dinámica de métodos. Si el método de la superclase fuera estático y el de la subclase no, saltaría un error “overridden method is static”.
Al crear un Cantante s con tipo Tenor, el tipo estático es Cantante, y el dinámico Tenor. Al invocar el método cantar sobre t se nos devuelve fa, y al invocar cantar sobre s, dado que s dispone de un método estático de s nombre se ejecuta y devuelve la. Por tanto la salida es : fa-la

430
No hay que preocuparse por no entender... para llegar a entenderlo hace falta un tiempo de estudio previo y Java no es un lenguaje lo que se dice sencillito.

431
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 {
    private MiClase2 prueba = new MiClase2();
    public void mostrarMiClase1 () {
        System.out.println (prueba.getContenido());
    }
}
class MiClase2 {
    String soy2 = "Hola soy 2";
    public String getContenido() { return soy2; }
}
class MiClase3 {
    MiClase1 pp;
    MiClase2 jj;
}


RESPUESTA: Sí, el código compila. El fichero lleva el nombre de la clase pública. Las otras clases dentro del fichero se conocen entre sí, pero no pueden ser usadas fuera del fichero.

432
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 { }
class MiClase1 {}


RESPUESTA: No, el código no compila. En un fichero no puede haber dos clases con el mismo nombre.

433
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

public class MiClase1 {  }

public class MiClase2 { }

class MiClase3 { }   



RESPUESTA: No, el código no compila. El compilador no sabe qué nombre ponerle a la clase si se declaran dos nombres como público. En un archivo se pueden definir varias clases, pero en un archivo no puede haber más que una clase public. Este archivo se llamará como la clase public que contiene con extensión *.java. Con excepciones, lo habitual es escribir una sola clase por archivo.

434
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

class MiClase1 { }

public class MiClase2 { }

class MiClase3 { }
   

RESPUESTA: Sí, el código compila. La clase (archivo) se denomina con el nombre de la clase que se declara como pública, es decir: MiClase2. Las otras clases se consideran clases privadas dentro de esta clase.

435
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

Código: [Seleccionar]
class MiClase1 { }

class MiClase2 { }

class MiClase3 { }

RESPUESTA: Sí, el código compila. La clase se denomina con el nombre de la primera declaración que aparezca, es decir: MiClase1. Si hay varias clases en un mismo fichero, java sólo permite que se pueda usar una de ellas desde código que esté fuera del fichero.
MiClase1 define un tipo.
Al no declararse usando public, el compilador le da visibilidad dentro del package en que esté definida. El resto de clases que se declaran tienen consideración de clases solo accesibles por otras clases dentro del fichero.

436
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

protected class MiClase1 {  }


RESPUESTA: No, el código no compila. Solo se admite public. Podría compilar si fuera una clase interna a otra clase.

437
PREGUNTA: ¿Este código compila y si compila, qué sentido tiene?

private class MiClase1 {  }

RESPUESTA:    No, el código no compila. Solo se admite public. Podría compilar si se tratara de una clase interna dentro de otra clase, pero tal y como está no.

438
PREGUNTA: Dado este fragmento de código, ¿cuál sería el resultado de compilarlo / ejecutarlo?

Código: [Seleccionar]
public static void main (String Args[] ) {
    int valor = 5;
    cambiarValor(valor);
    System.out.println (valor);
}

public static void cambiarValor (int valor) {
    private int valor = valor * 2;
}

RESPUESTA: Hemos de suponer que el código está dentro de una clase, porque si no no se puede compilar ni ejecutar. El resultado es error en la línea 10 porque dentro de un método no pueden declararse variables locales precedidas de modificadores de acceso (public/private/protected)

439
Lo de absurdas o rebuscadas, porque cuando analizas las preguntas de examen te das cuenta de que muchas no tienen ni pies ni cabeza. Son preguntas relativas a detalles muy concretos de código que nunca en la vida se te va a plantear en la vida profesional... y cuando ves eso dices ¿y esto para qué demonios sirve? No digo que todas las preguntas sean así, pero sí muchas de ellas.
Sobre lo del tipo test, efectivamente lo que estoy posteando no incluyo las opciones del test, sino que directamente voy a la respuesta. Esto es para ahorrar espacio y no marear al personal... al final lo que te tienes que saber es la respuesta.

440
PREGUNTA: ¿Una clase puede tener como nombre un número o su nombre empezar por un número?

RESPUESTA: No. Al igual que no es válido que el nombre de una variable empiece con un número, tampoco el nombre de una clase puede empezar con un número.

Páginas: 1 ... 17 18 19 20 21 [22] 23

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".