Tablica w Javie nie jest tak jak w C miejscem w pamięci. Tablica jest obiektem klasy, który dostaje niezmienny rozmiar w trakcie tworzenia. Każda tablica dziedziczy po klasie Object i ma swoje pole length, w którym jest zapisana (niezmienna) ilość elementów tej tablicy. Tablicę tworzysz nie przez deklarację zmiennej tablicowej, ale przez wyrażenie new xxx[rozmiar], które w wyniku daje wartość referencji do tablicy, gdzie xxx jest typem elementów tej tablicy. Rozmiaru raz utworzonej tablicy nie można zmienić, za to bez żadnych ograniczeń można zmieniać jej komórki. Jedynym sposobem, aby jakaś zmienna referencyjna taka jak "String[] zmienna" wskazywała na tablicę o innym rozmiarze jest przypisanie tej zmiennej referencji do tablicy o innym rozmiarze.
Ponieważ tablica jest obiektem, więc przypisanie tablicy jakiejś zmiennej (lub parametrowi metody) działa tak jakbyś przypisywał wskaźnik do tablicy, więc metoda może zmieniać tablicę, którą jej przekazano jako argument. Komórkom każdej tablicy, której typem jest klasa przypisuje się referencje do obiektów, a ponieważ tablica jest również obiektem, to w Javie podobnie jak w C nie ma tablicy wielowymiarowej - są tylko tablice, której komórkami są referencje do tablic. Różnica jest jednak taka, że każdy wymiar ma znany rozmiar i na dodatek może się on zmieniać.