Gdybym zadeklarować String
tablicy:String inicjalizacji tablicy w Javie
String names[] = new String[3];
Więc dlaczego nie możemy przypisać wartości do tablicy zadeklarowanej powyżej tak:
names = {"Ankit","Bohra","Xyz"};
Gdybym zadeklarować String
tablicy:String inicjalizacji tablicy w Javie
String names[] = new String[3];
Więc dlaczego nie możemy przypisać wartości do tablicy zadeklarowanej powyżej tak:
names = {"Ankit","Bohra","Xyz"};
można wykonać następujące czynności podczas deklaracji:
String names[] = {"Ankit","Bohra","Xyz"};
A jeśli chcesz to zrobić gdzieś po deklaracji:
String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
Jak zapytałem, dlaczego nie możemy go zainicjować za pomocą nawiasów klamrowych po zadeklarowaniu jako tablica 3. –
@AnkitBohra. To właśnie robi drugi fragment. –
@AnkitBohra ponieważ '{" x "," y "," z "}' nie jest instancją tablicy. Natomiast 'nowy ciąg [] {" x "," y "," z "}' jest. – zEro
names[] = {"Ankit","Bohra","Xyz"};
jest inicjator i stosowane wyłącznie przy konstruowaniu lub tworzenia nowy tablicy obiektu. Nie można go użyć do ustawienia w tablicy zestawu. Można go używać gdy zadeklarowana jako:
String[] names= {"Ankit","Bohra","Xyz"};
Można również użyć:
names=new String[] {"Ankit","Bohra","Xyz"};
jak to robi różnicę, kiedy musimy użyć - ** String [] names = {" Ankit "," Bohra "," Xyz "}; ** i kiedy ** names = new String [] {" Ankit "," Bohra "," Xyz "}; **, każdy przypadek użycia, w którym pasuje. z góry dzięki @hexafraction. –
@Avenger Nic. Obaj robią to samo, jeśli dobrze pamiętam. – hexafraction
To znaczy, jak:
String names[] = {"Ankit","Bohra","Xyz"};
Ale można to zrobić tylko w tym samym oświadczeniu, kiedy zadeklaruj to
Nie tak, chciałem wiedzieć, dlaczego nie możemy wykonać tej inicjalizacji nawiasów klamrowych po zadeklarowaniu jakiejkolwiek tablicy. –
Ponieważ język jest zdefiniowany w ten sposób niestety. – texasbruce
To nie jest poprawna składnia Java. Można zrobić
names = new String[] {"Ankit","Bohra","Xyz"};
Najpierw, to nie ma nic wspólnego z String
, to jest o tablicach .. i że zbyt konkretnie o deklaratywnej inicjalizacji tablic.
Jak wspomniano przez wszystkich niemal każdą odpowiedź tutaj, można, deklarując zmienną, przeznaczenie:
String names[] = {"x","y","z"};
Jednak deklaracja poczta, jeśli chcesz przypisać instancję tablicy:
names = new String[] {"a","b","c"};
AFAIK The deklaracja składnia tylko cukier syntaktyczny i to nie ma zastosowania, gdy już przypisać wartości do zmiennych, ponieważ przy przypisaniu wartości trzeba poprawnie utworzyć instancję.
Jednakże, jeśli pytasz nas, dlaczego tak jest? Cóż ... powodzenia uzyskanie odpowiedzi na to. Chyba że ktoś z komitetu Javy odpowie na to pytanie lub istnieje wyraźna dokumentacja cytująca wspomniany cukier składniowy .
"stałe tablicowe mogą być używane tylko w inicjalizatorach"; Czy to nie wystarczający powód? Chyba, że szukasz "intencji legislacyjnej"! – zEro