Zelf ken ik nog geen Java (wel C++), maar ik heb even de tijd genomen om het een en ander op te zoeken.
Om terug te komen op je oorspronkelijke vraag. Het schrijven van een expressie als
noemt men explicit casting. Dit betekent dat je een entiteit van een bepaald datatype gaat omzetten in het door jou expliciet opgegeven type. Explicit casting is echter niet altijd nodig, vaak doet de compiler voor jou automatisch al een aantal omzettingen. Deze automatische conversies worden impliciete conversies of coercions genoemd.
In jou oorspronkelijk opgegeven code, was de explicit cast niet nodig. De compiler weet wel hoe hij een char maal een char, in een char moet omzetten. Als je een stukje code schrijft als
dan ga je ook niet schrijven
De compiler weet immers hoe hij hier mee moet omgaan. De compiler kan echter nog meer typeconversies automatisch uitvoeren. Een soort typeconversies dat de compiler bijvoorbeeld ook automatisch kan uitvoeren zijn de 'Widening Primitive Conversion'. Onder deze conversies vallen o.a. het omzetten van:
- een short in een int
- een int in een long
- een char in een int
- een long in een double
Als je wil weten wat er exact allemaal kan, kan je kijken op de site van Sun (zie
hier onder puntje 5.1.2).
Je kan dus gerust een stukje code schrijven als
Omgekeerd heb je ook nog de 'Narrowing Primitive Conversions'. Dit is bv. het omzetten van:
- een int in een char
- een long in een int
Voor deze conversies zal je dus een explicit cast moeten doen. Je zal dus bv. moeten schrijven
Code: Selecteer alles
int i = 5;
char c = (char)i;
long i = 25;
int j = (int)i;
De reden waarom men bij de onderste voorbeelden explicit cast verplicht is gemaakt, is voor je eigen veiligheid. Stel dat je per ongeluk een reeel getal zou toekennen aan een geheel getal. Dan ben je ineens het deel achter de komma kwijt, wat soms niet wenselijk is. Omgekeerd kan het geen kwaad om een geheel getal aan een reeel getal toe te kennen.
Op
deze website heb ik nog wat interessante dingen gevonden over het onderwerp. Je kan het eens lezen als je er in geïnteresseerd mocht zijn ](*,) .