Crear clase

Paso 1

public class Arreglo {

}

El constructor

// Definimos nuestra clase Arreglo
public class Arreglo {
  
  // Constructor con parámetro "longitud" (tamaño inicial)
  public Arreglo(int longitud){
  
  }

}

El constructor

// Definimos nuestra clase Arreglo
public class Arreglo {

  // Atributo privado: un array de enteros
  // Aquí guardaremos los elementos del Arreglo dinámico
  private int[] items;
  
  // Constructor con parámetro "longitud"
  public Arreglo(int longitud){
  
  }

}

El constructor

// Definimos nuestra clase Arreglo
public class Arreglo {

  // Atributo privado: array de enteros - encapsulación
  private int[] items;
  
  // Constructor: inicializa el arreglo con tamaño "longitud"
  public Arreglo(int longitud){
    // Creamos un array de enteros con la longitud dada
    items = new int[longitud];
  }

}

El método: imprimir ()

public class Arreglo {

    private int[] items;

    public Arreglo(int longitud){
        items = new int[longitud];
    }

    public void imprimir() {
        for (int i = 0; i < items.length; i++)
            System.out.println(items[i]);
    }

}

MAIN

public class Main {
    public static void main(String[] args) {
    Arreglo numeros = new Arreglo(3);
    numeros.imprimir();
    }
}

Salida

0
0
0

Lo que pasa es lo siguiente: hasta ahora, cuando usas items.length, en realidad estás recorriendo toda la memoria reservada, no los elementos que de verdad están en el arreglo dinámico.

Salida

Por ejemplo:

  • Creamos un Arreglo(3) → internamente items = new int[3] → en Java eso son 3 posiciones inicializadas en 0.

  • Si llamas imprimir(), recorres las 3 posiciones → ves 0, 0, 0.

  • Pero conceptualmente no hemos insertado nada todavía.

El método: imprimir ()

public class Arreglo {

    private int[] items;

    public Arreglo(int longitud){
        items = new int[longitud];
    }

    public void imprimir() {
        for (int i = 0; i < items.length; i++)
            System.out.println(items[i]);
    }

}

Para solucionar eso, necesitamos un contador (count) que guarde cuántos elementos reales tiene el arreglo.

El campo contador

public class Arreglo {

    private int[] items;

    // Nuevo campo: número de elementos realmente insertados
    private int contador;

    public Arreglo(int longitud){
        items = new int[longitud];
        contador = 0; // al inicio, el arreglo está vacío
    }

    public void imprimir() {
        for (int i = 0; i < contador; i++)
            System.out.println(items[i]);
    }

}

MAIN

public class Main {
    public static void main(String[] args) {
        Arreglo numeros = new Arreglo(3);
        numeros.imprimir();
    }
}

Salida

(nada, porque contador = 0)