← Volver a actividades
Autoevaluación

Autoevaluación: Variables, Tipos de Datos y Operadores

Variables, Tipos de Datos y Operadores · 15 min aprox.

Respondé todas las preguntas y presioná Calificar para ver tu puntaje.

1. ¿Cuál es el valor almacenado en la variable resultado tras ejecutar esta línea en Java?
int resultado = 7 / 2;
Correcto Incorrecto Sin responder

Respuesta correcta: 3

¿Por qué? En Java, cuando ambos operandos de una división son de tipo entero (int), la operación se evalúa como división entera y trunca cualquier parte decimal hacia cero, dando como resultado 3. Para obtener 3.5 al menos uno de los dos operandos debe ser de tipo decimal (por ejemplo, 7.0 / 2 o (double) 7 / 2).

2. En Java, las variables locales declaradas dentro de un método reciben automáticamente un valor predeterminado como 0 o false si no se inicializan.
Correcto Incorrecto Sin responder

Respuesta correcta: Falso

¿Por qué? Las variables locales no reciben valores predeterminados. El compilador de Java exige que cumplan la regla de asignación definida (*definite assignment*): si intentás leer una variable local antes de asignarle un valor de forma demostrable, el código no compilará. Los valores por defecto solo aplican a los atributos (campos) de una clase.

3. ¿Qué valor imprime por consola este fragmento de código?
double precio = 49.99;
int precioEntero = (int) precio;
System.out.println(precioEntero);
Correcto Incorrecto Sin responder

Respuesta correcta: 49

¿Por qué? El casting reductor o explícito de double a int mediante (int) trunca la parte fraccionaria sin redondear. Por lo tanto, 49.99 pasa a ser estrictamente 49. Si se deseara un redondeo aritmético tradicional a 50, se debería utilizar un método matemático como Math.round().

4. Para asignar un literal numérico entero que supere el rango máximo de un int a una variable long, es obligatorio agregar el sufijo L o l.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? Por defecto, todos los literales numéricos enteros en el código fuente de Java son interpretados por el compilador como tipo int (32 bits). Si el número excede 2,147,483,647, el compilador dará error de número fuera de rango a menos que se agregue explícitamente el sufijo L (por ejemplo 3000000000L).

5. ¿Qué ocurre al intentar compilar el siguiente fragmento de código?
int edad = 20;
if (edad >= 18) {
    String mensaje = "Mayor de edad";
}
System.out.println(mensaje);
Correcto Incorrecto Sin responder

Respuesta correcta: Error de compilación: la variable mensaje no es visible fuera del bloque if.

¿Por qué? El ámbito (*scope*) y la visibilidad de una variable declarada dentro de un bloque delimitado por llaves { } termina exactamente donde cierra ese bloque. La variable mensaje deja de existir al salir del if, por lo que el System.out.println posterior produce un error de compilación por símbolo no encontrado.

6. Si x = 5, ¿cuál es el valor resultante de la expresión lógica booleana?
int x = 5;
boolean resultado = !(x > 3) || (x % 2 == 1);
Correcto Incorrecto Sin responder

Respuesta correcta: true

¿Por qué? Desglosemos paso a paso: x > 3 es true, pero el operador ! invierte su valor, quedando false. Luego, x % 2 calcula el resto de 5 / 2, que es 1. La comparación 1 == 1 resulta en true. Finalmente, false || true se resuelve como true.

7. Una variable declarada con el modificador final se convierte en una constante cuyo valor no puede ser modificado tras su primera asignación.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? En Java, final hace que la variable sea inmutable en su asignación. Cualquier intento posterior de reasignarle un valor provocará un error de compilación inmediato, garantizando la consistencia de los datos críticos.

8. ¿Cuál de los siguientes tipos primitivos en Java almacena exactamente un carácter en formato Unicode ocupando 16 bits en memoria?
Correcto Incorrecto Sin responder

Respuesta correcta: char

¿Por qué? El tipo primitivo char ocupa 16 bits sin signo y almacena un único carácter codificado en UTF-16. byte (8 bits) y short (16 bits) son numéricos con signo, mientras que String no es un tipo primitivo sino una clase (tipo por referencia).

9. ¿Qué ocurre al ejecutar este fragmento de código con operadores de cortocircuito?
int x = 10;
int divisor = 0;
boolean seguro = (divisor != 0) && (x / divisor > 2);
System.out.println(seguro);
Correcto Incorrecto Sin responder

Respuesta correcta: Imprime false sin lanzar ninguna excepción.

¿Por qué? El operador && evalúa mediante cortocircuito (*short-circuit*): si la primera expresión es false (divisor != 0 resulta false), Java no evalúa la segunda expresión, ya que el resultado del AND nunca podrá ser verdadero. Esto evita que se ejecute la división por cero y previene un ArithmeticException.

10. El fenómeno de sombreamiento (shadowing) se produce cuando un parámetro o variable local tiene el mismo identificador que un campo de clase, ocultándolo en ese bloque.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? El sombreamiento ocurre cuando una variable con ámbito más interno (como un parámetro de método o constructor) comparte nombre con un campo de instancia o de clase. Dentro de ese bloque, el nombre resolverá siempre a la variable local, requiriendo el uso explícito de this.nombre para acceder al campo del objeto.