int v = 0;
for (v; v<2; v++) {
...
}
Dlaczego nie jest to dozwolone w Javie?
Dlaczego musimy zadeklarować zmienną v
w inicjalizacji pętli for? Wiem, że nie jest to stwierdzenie, jeśli robię to w ten sposób, ale dlaczego Java nie pozwala na powyższe?
for(;;)
v
nie jest dozwolone, ponieważ nie jest to stwierdzenie: jest to ten sam powód, dla którego nie można pisaćv;
samodzielnie w innym miejscu.for
pętli.Odpowiedzi:
Jeśli
v
zadeklarowano przed pętlą, należy pozostawić pierwszą część instrukcji for pustą:Nie ma sensu po prostu pisać
v;
.źródło
Twoja deklaracja pętli jest ważna, jeśli usuniesz z niej dane zewnętrzne
v
(zakładając, żev
została wcześniej zadeklarowana):Zmień to na
for(; v < 2; v++)
Wszystkie trzy modyfikatory w tradycyjnej
for
pętli są opcjonalne w Javie.Przykłady alternatyw:
Poniżej jest to samo, co
while (true)
pętla:Dodawanie dodatkowych przyrostów:
Dodanie dodatkowych warunków w celu zakończenia pętli:
Deklarowanie wielokrotności zmiennej tego samego typu:
I oczywiście możesz mieszać i dopasowywać dowolne z nich, jak chcesz, całkowicie pomijając te, które chcesz.
źródło
Według dokumentu java
Oznacza, że można utworzyć
for
pętlę i pozostawić 3 wyrażenia puste. Jedną z opcji jest deklaracjaint v
przed pętlą:źródło
Nie musisz deklarować zmiennej w
ForInit
.Jak zauważyli inni, możesz po prostu pominąć
ForInit
; ale możesz także użyć tam listy wyrażeń.Na przykład możesz tworzyć nowe wystąpienia klasy, wywoływać metody i przypisywać zmienne / increment / decrement:
(Ten przykład jest bezsensowny, ale legalny)
Nie można jednak mieszać tych wyrażeń instrukcji z deklaracjami zmiennych lokalnych.
źródło
Nie potrzebujesz go do ulepszonej
for
pętli.źródło
int w = 0;
w telewizji;
dla (v; v <2; v ++) {
} zadeklarowałeś v przed pętlą, ale ponownie użyłeś bez jakiejkolwiek inicjalizacji.
jeśli użyjesz w który został już zadeklarowany i zainicjowany wcześniej, nie będzie żadnych problemów. na przykład poniższy kod,
dla (; w <2; w ++) {
}
źródło