Portál AbcLinuxu, 15. července 2025 03:24
for (int i=0; i< 4; ++i){
System.out.println(i);
}
for (int i=0; i< 4; i++){
System.out.println(i);
}
kody se lisi v inkrementaci a vypisuji stejne hodnoty.
i++
nejdříve se v daném kontextu použije aktuální hodnota proměnné i
a potom se inkrementuje. Pokud použiješ ++i
nejdříve se inkrementuje a potom se použije výsledná hodnota. Nejlépe to uvidíš na příkladu. Zkus si si někde bokem následující kód:
int i = 5; int j = 5; System.out.println(i++); System.out.println(++j);
for(int i=0;i<3;++i)
jsem predpokladala vystup [1,2], zarazilo me, ze neni mezi nimi rozdil.
++i
v for(int i=0;i<3;++i)
není žádný, proto je úplně jedno, jak tu inkrementaci použiješ.
Ten rozdíl jde poznat jen ve výrazech, kde tu inkrementovanou proměnnou rovnou i použiješ. Z hlavy mě napadají akorát tyto příklady: System.out.println(i++);
nebo i = ++i + 3;
.
Nicméně mi přijde trošku prasácké takové věci psát. Člověk si možná ušetří jeden řádek, kam by dal tu inkrementaci než/potom co by chtěl tu proměnnou použít, ale kdo to má potom luštit, když je víc takových věcí na jednom řádku. Ještě větší sranda potom je, když je to v C++ a motají se do toho ukazatele.
void
). for
cyklus je tedy možné použít třeba takhle:
public class Pocitadlo { private final int konec; private int pocitadlo = 0; public Pocitadlo(int konec) { this.konec = konec; } public boolean isKonec() { return pocitadlo < konec; } public void dalsi() { this.pocitadlo += 1; } public static void main(String... args) { for(Pocitadlo pocitadlo = new Pocitadlo(); pocitadlo.isKonec(); pocitadlo.dalsi()); } }
isContinue()
.
Java však umí i foreach, kterému při zpracování kolekcí dávám jednoznačně přednost.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.