Ik ben enigszins verbaast over de manier waarop Java een if-statement evalueert, en ik hoop dat iemand mij kan vertellen waarom Java het op deze manier doet. Neem bijvoorbeeld de volgende code (i is een globale variable):
Dit zal nooit "yah" printen, terwijl ik hier eigenlijk wel op hoopte. Ik verwachtte namelijk dat Java eerst de eerste conjunct volledig evalueert, en afhankelijk van het resultaat daarvan de tweede (wanneer de eerste faalt kan de tweede namelijk genegeerd worden), maar nu krijg ik het idee dat ze beiden tegelijk ge-evalueert worden.
Java: example1
1
2
3
4
5
6
7
8
9
10
| int i = 0; if (change() && (i == 5)) System.out.println("yah"); ... private boolean change() { i = 5; return true; } |
Dit zal nooit "yah" printen, terwijl ik hier eigenlijk wel op hoopte. Ik verwachtte namelijk dat Java eerst de eerste conjunct volledig evalueert, en afhankelijk van het resultaat daarvan de tweede (wanneer de eerste faalt kan de tweede namelijk genegeerd worden), maar nu krijg ik het idee dat ze beiden tegelijk ge-evalueert worden.