Contexto

En el ecosistema Java, los arrays y los Strings comparten una raíz común: cómo la JVM organiza la memoria en el Heap.

  1. Un array es un bloque contiguo de casillas de tamaño fijo. Si querés agrandarlo, debés pedir un bloque nuevo y copiar los elementos con Arrays.copyOf().
  2. Un String es un objeto inmutable respaldado por un array de caracteres. Cada vez que concatenás con el operador + en un bucle, la JVM crea un nuevo objeto en memoria y descarta el anterior, generando un desperdicio enorme de recursos. Para ensamblar reportes o textos dinámicos de forma eficiente, la herramienta profesional es StringBuilder.
  3. Al comparar cadenas, el operador == evalúa si dos variables apuntan al mismo casillero del Heap, no si tienen las mismas letras. Por eso, comparar textos siempre exige .equals().

Consigna

Creá la clase ReporteEstudiantes.java que aplique estos conceptos para procesar las calificaciones de un grupo de estudiantes.

1. Datos de Origen

Declaralos en main:

import java.util.Arrays;

public class ReporteEstudiantes {
    public static void main(String[] args) {
        String[] estudiantes = {"  ana martinez  ", "CARLOS LOPEZ", "  lucia diaz ", "beto vargas"};
        
        int[][] calificaciones = {
            {8, 9, 7},
            {4, 5, 6},
            {9, 10, 10},
            {2, 4, 3}
        };

        // 1. Normalizar nombres
        // 2. Calcular promedios
        // 3. Demostrar Arrays.copyOf y Arrays.sort
        // 4. Construir tabla con StringBuilder
        // 5. Demostrar == vs .equals()
    }
}

2. Procesamiento con StringBuilder

Instanciá StringBuilder sb = new StringBuilder(); y agregá encabezados, filas de estudiantes y separadores con .append(). Al finalizar, mostrá el resultado con un único System.out.println(sb.toString());.

3. Prueba de Fuego: == vs .equals()

Creá dos variables:

String base = "JAVA";
String dinamica = new String("JAVA");

Mostrá en consola por qué base == dinamica resulta false (apuntan a instancias distintas) mientras que base.equals(dinamica) resulta true (contienen la misma secuencia de caracteres).