Portál AbcLinuxu, 13. listopadu 2025 08:05
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.