wypełnienie tablicy w Javie

0

To mój 2 temat uczę się javy.
Deklaruje 3 pola prywatne . 2 typu int oraz referencje do tablicy private String tab[];
W konstruktorze chciałbym utworzyć dla niej rozmiar.
Na czym polega błąd zrozumienia w kodzie?Pomimo ze kod się skompiluje.
Ale gdy już stworzę nowy obiekt to nie.

class Test{
private String tab[];
private int rozmiar;
private int szczyt;

public Test(String tab[]){
	this.tab = tab;
}

}

class Aplikacja_Stos{
public static void main(String args[]){

}

}

0

W Javie nie da się zmienić rozmiaru tablicy. Można co najwyżej stworzyć tablicę o danym rozmiarze.

0
private String[] tablica;

public Test(int rozmiar) {
   this.tablica = new String[rozmiar];
}
0

dzięki
Mógłbyś jeszcze dopisać gdybym po prostu zostawił w ten sposób
String tab[] = new String[3];
Mógłbym wykonywać metody na tej tablicy gdyby nie został utworzony
rozmiar w konstruktorze:)

0

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ć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1