Saltar al contenido principal

Resumen Java (Unidad 3)

Java y su ecosistema

  • JDK (Java Development Kit): kit de herramientas para el desarrollo de software en Java. Incluye el compilador (javac), el depurador y el JRE.
  • JRE (Java Runtime Environment): entorno necesario para ejecutar aplicaciones Java. Contiene la JVM y las bibliotecas estándar.
  • JVM (Java Virtual Machine): máquina virtual encargada de ejecutar el bytecode, proporcionando independencia de la plataforma.
  • Bytecode: código intermedio (archivos .class) generado por el compilador que es interpretado o compilado por la JVM.
  • Recolector de basura (Garbage Collector): sistema automático de gestión de memoria que libera el espacio de los objetos que ya no están referenciados.
  • API de Java: conjunto de bibliotecas y clases predefinidas listas para ser utilizadas por los desarrolladores.

Programación básica

  • Variables: espacios reservados en memoria para almacenar datos que pueden cambiar. Deben declararse con un tipo y un nombre siguiendo la convención camelCase.
  • Constantes: variables cuyo valor no puede ser modificado una vez asignado. Se declaran con la palabra clave final.
  • Tipado en Java:
    • Estático: el tipo de las variables se comprueba en tiempo de compilación.
    • Fuerte: no se permiten operaciones entre tipos incompatibles sin conversión explícita.
    • Explícito: se debe indicar el tipo de dato al declarar la variable.
  • Tipos de datos primitivos:
    • Enteros:
      • byte (8 bits)
      • short (16 bits)
      • int (32 bits)
      • long (64 bits)
    • Punto flotante:
      • float (32 bits)
      • double (64 bits)
    • Carácter:
      • char (16 bits, Unicode)
    • Lógico:
      • boolean (true o false)
  • Overflow / Underflow: situación en la que un valor excede el rango máximo o mínimo de su tipo de dato, "rebotando" al extremo opuesto.
  • Conversión de tipos (Casting): proceso de transformar un dato de un tipo a otro, pudiendo ser automático (promoción) o explícito mediante el operador (tipo).

Operadores

  • Aritméticos: realizan operaciones matemáticas (+, -, *, /, %).
  • Relacionales: comparan valores devolviendo un booleano (==, !=, <, >, <=, >=).
  • Lógicos: combinan expresiones booleanas (&&, ||, !).
  • Asignación: asignan valores a variables, incluyendo formas combinadas (=, +=, -=, etc.).
  • Unarios: incrementan o decrementan en una unidad (++, --).
  • Ternario: permite realizar una asignación condicional compacta (condición ? valorTrue : valorFalse).

Entrada y salida

  • Scanner: clase del paquete java.util utilizada para leer datos desde la entrada estándar (System.in).
  • Buffer de entrada: memoria temporal donde se almacenan las pulsaciones de teclado. Métodos como nextInt() pueden dejar restos en el buffer (saltos de línea) que deben limpiarse con nextLine().
  • Salida estándar: métodos System.out.print(), System.out.println() (con salto de línea) y System.out.printf() (salida formateada).

Estructuras de control

Estructuras condicionales

  • if-else: estructura que permite ejecutar diferentes bloques de código según se cumpla o no una condición lógica.
  • switch: permite seleccionar una ruta de ejecución entre varias opciones basadas en el valor de una expresión (compatible con int, String, char, etc.).
  • break: en un switch, se utiliza para evitar que el flujo de ejecución continúe con los siguientes casos (fall-through).

Estructuras iterativas (bucles)

  • while: repite un bloque de código mientras la condición sea verdadera. La condición se evalúa al principio.
  • do-while: similar al while, pero garantiza al menos una ejecución ya que la condición se evalúa al final.
  • for: estructura orientada a repetir un bloque un número determinado de veces, integrando inicialización, condición e incremento.
  • Salidas anticipadas:
    • break: finaliza completamente la ejecución del bucle.
    • continue: detiene la iteración actual y salta directamente a la evaluación de la condición del siguiente ciclo.

Ámbito de las variables (Scope)

  • Variables locales: aquellas definidas dentro de un bloque de código o método, siendo accesibles solo dentro de dicho bloque (entre las llaves {}).

Arrays

  • Definición: estructura que permite agrupar múltiples elementos del mismo tipo bajo un único nombre.
  • Características:
    • Tamaño fijo: una vez creado, el número de elementos no puede cambiar.
    • Homogéneos: todos sus elementos deben ser del mismo tipo de dato.
  • Índices: posición de un elemento en el array, comenzando siempre por 0 hasta longitud - 1.
  • Referencias: en Java, un array es un objeto. La variable del array guarda una referencia a la dirección de memoria donde se encuentra el objeto, no los valores en sí.
  • Arrays multidimensionales: arrays cuyos elementos son otros arrays, permitiendo representar estructuras como tablas o matrices.
    • Arrays de 2 dimensiones: tablas o matrices.
    • Arrays de 3 dimensiones: cubos.
    • Arrays de n dimensiones: hipercubos.
  • Clonación: proceso de crear una copia independiente de un array. Un simple = solo copiará la referencia, no los datos.