Jaren geleden kwam uit een onderzoek van een groot aantal computerprogramma’s al naar voren dat statements van de vorm:
int getal = 0;
getal = getal + 1;
de meest voorkomende instructies waren! Java heeft zelfs een afgekorte versie hiervan, de zogeheten incrementinstructie. De operatoren ++ en -- voeren ophogingen en verlagingen (ergens 1 van aftrekken) uit. Deze operatoren worden het meest gebruikt in lussen. Hier volgt een manier om de ++-operator te gebruiken.
getal = 3;
getal++; //getal is nu gelijk aan 4
getal--; //getal is nu terug gelijk aan 3
De bewerkingen *, / en % worden vóór + en – uitgevoerd. We kunnen ook een groep berekeningen tussen haakjes zetten er zo voor zorgen dat deze het eerst berekend worden. Als in een berekening operatoren van gelijke prioriteit voorkomen, wordt de berekening van links naar rechts uitgevoerd. Enkele voorbeelden:
int getal1 = 0;
int getal2 = 3;
double getal3 = 0;
getal1 = getal2 + 3; //getal1 wordt 6
getal1 = getal2 * 4; //getal1 wordt 12
getal1 = 7 + 2 * 4; //getal1 wordt 15
getal2 = getal2 * (getal2 + 2) * 4; // getal2 wordt 60
getal3 = 3.5 / 2; //getal3 wordt 1.75
getal2 = 7 / 4; //getal2 wordt 1
Zoals te zien in de voorbeelden is het gebruik van +, - en * redelijk vanzelfsprekend, maar een deling is soms lastig aangezien een combinatie van de types int en double kan gebruikt worden. Dit zijn de essentiële punten bij de deling
Wanneer / op twee double-getallen werkt, of op een combinatie van double en int, levert dit een double-resultaat op. Achter de schermen wordt ten behoeve van de berekening elke int-waarde beschouwd als een double. Dit is de manier waarop een rekenmachine werkt.
Wanneer / op twee integers werkt, levert dit een integer resultaat op. Dit resultaat wordt afgekapt, wat wil zeggen dat alle cijfers achter de komma worden weggehaald. Dit is dus anders dan de manier waarop een rekenmachine werkt.
Een paar voorbeelden:
double getal1 = 0;
getal1 = 7.61 / 2.1; //getal1 wordt 3.62
getal1 = 10.6 / 2; //getal1 wordt 5.3
int getal2 = 0;
getal2 = 10 / 5; //getal2 wordt 2
getal2 = 13 / 5; //getal2 wordt 2
getal2 = 33 / 44; //getal2 wordt 0
De %-operator (modulo-operator) levert de rest op na gehele deling. Bijvoorbeeld
int getal1 = 0;
getal1 = 12 % 4; //getal1 wordt 0
getal1 = 13 % 4; //getal1 wordt 1
getal1 = 14 % 4; //getal1 wordt 2
Hieronder staat een probleemstelling die met een rest te maken heeft:
Converteer een geheel aantal centen in twee delen: het aantal euro’s en het aantal resterende centen. De oplossing is:
int centen = 234;
int aantalEuro = centen / 100; //aantalEuro wordt 2
int resterendeCenten = centen % 100; //resterendeCenten wordt 34
Hoewel de modulo-operator iets abstracts lijkt, is dit een veel gebruikte operator. Ook in het dagelijkse leven wordt er vaak gebruik van gemaakt.
Stel je hebt 80 eieren en je wil weten hoeveel volle eierkartons van 12 eieren je hiermee kan vullen en hoeveel eieren er dan nog overschieten.
int aantalEieren = 80;
int aantalVolleEierkartons = 80 / 12; // 6 volle eierkartons
int rest = 80 % 12; // 8 eieren over