További
&& (ÉS) és || (VAGY) az IF utasításokban
A következő kóddal rendelkezem:
if(!partialHits.get(req_nr).containsKey(z) || partialHits.get(req_nr).get(z) < tmpmap.get(z)){
partialHits.get(z).put(z, tmpmap.get(z));
}
ahol a partialHits
egy HashMap.
Mi fog történni, ha az első utasítás igaz? A Java akkor is ellenőrizni fogja a második utasítást? Mert ahhoz, hogy az első utasítás igaz legyen, a HashMap nem tartalmazhatja a megadott kulcsot, így ha a második utasítást ellenőrzi, NullPointerException
-t fogok kapni.
Tehát egyszerűbben fogalmazva, ha a következő kódunk van
if(a && b)
if(a || b)
a Java ellenőrizni fogja a b
-t, ha az a
az első esetben hamis, és ha az a
a második esetben igaz?
125
3
Nem, nem fogják ellenőrizni. Ezt a viselkedést rövidzárlat-kiértékelésnek nevezik, és számos nyelvben, köztük a Javában is megtalálható.
Nem, ha a igaz (egy
vagy
tesztben), akkor a b nem kerül tesztelésre, mivel a teszt eredménye mindig igaz lesz, függetlenül a b kifejezés értékétől.Készítsünk egy egyszerű tesztet:
nem dob
NullPointerException
-t!Nem, a Java rövidre zárja és leállítja a kiértékelést, ha már tudja az eredményt.