In het bovenstaande voorbeeld hebben we gebruik gemaakt van variabelen. De programmeur kan zelf de naam kiezen van de variabele, maar het is beter om voor betekenisvolle en geen cryptische namen te kiezen. Zoals in de meeste programmeertalen zijn er ook in Java bepaalde regels waaraan de naam van een variabele moet voldoen. In Java geldt, dat namen:
Met een letter moeten beginnen (A tot en met Z, a tot en met z) of (niet zo gebruikelijk) met een underscore _
Een willekeurig aantal letters of cijfers kunnen bevatten (een cijfer is 0 tot en met 9)
Een underscore _ kunnen bevatten
Tot 255 tekens lang kunnen zijn
Merk bovendien op dat Java ‘case-sensitive’ is. De ‘case’ van een letter geeft aan of het een hoofdletter is (upper case) of een kleine letter (lower case). In Java is het verschil tussen een hoofd- en een kleine letter van belang.
Naast deze Java-regels is er ook nog de stijlrichtlijn die aangeeft dat men bij de naam van een variabele elk woord behalve het beginwoord met een hoofdletter laat beginnen.
Datatypes
Elke variabele heeft een datatype. In de onderstaande tabel staan de numerieke types met hun default, minimum en maximum waarde.
Het String-datatype wordt voornamelijk gebruikt bij invoer en uitvoer, waarbij we gegevens verwerken die door een gebruiker worden ingevoerd, en resultaten op het scherm laten zien. Veel van Java’s GUI-klassen, zoals JTextBox en JLabel, werken niet met getallen, maar met strings van tekens. Daarom is het noodzakelijk dat een getal omgezet wordt naar een string om te kunnen gebruiken als parameter van de methode setText(…).
Numerieke waarde omzetten naar een string
Om een numerieke variabele of berekening (in het algemeen een expressie) om te zetten naar een string, kunnen we de toString-methoden van de Integer en Double-klassen gebruiken. Hier zijn enkele voorbeelden:
String str1, str2, str3, str4;
int getal1 = 44;
double getal2 = 1.2345;
//Manier 1
str1 = Integer.toString(getal1);
str2 = Double.toString(getal2);
//Manier 2
str3 = getal1 + "";
str4 = getal2 + "";
Normaal gesproken wordt een methodenaam (zoals toString) voorafgegaan door een object waar de methode op kan werken, maar hier geven we een klassenaam op (Integer of Double). Methoden die op deze manier werken worden static genoemd en wanneer we deze gebruiken, moeten we aangeven tot welke klasse ze behoren. De Double- en Integer-klassen bevatten extra faciliteiten voor double- en int-typen. Merk op dat de klassenamen, zoals altijd, met een hoofdletter beginnen.
Strings omzetten naar numerieke waarde
Om strings naar getallen te converteren, gebruiken we de parse-methoden van de Double- en de Integer-klassen. Enkele voorbeelden van de manier waarop een string naar een int of een double geconverteerd kan worden:
String str1 = "1234";
String str2 = "1.234";
int getal1 = Integer.parseInt(str1);
double getal2 = Double.parseDouble(str2);
De parseInt- en parseDouble-methoden vereisen één parameter, die van het type String moet zijn. Deze methoden worden onder andere gebruikt wanneer de gebruiker getallen ingeeft via tekstvakken. Deze invoer kan echter tekens bevatten die in getallen niet zijn toegestaan. De parseInt- en de parseDouble-methoden sporen dergelijke tekens op en beëindigen het programma.
Conversie tussen getallen
Soms moeten we numerieke waarden van het ene type naar het andere converteren. De belangrijkste gevallen zijn het converteren van een int naar een double, en een double naar een int.
Een voorbeeld: we hebben negen appels, die we eerlijk onder vier mensen willen verdelen. De waarden 9 en 4 zijn duidelijk integers, maar het antwoord is een double-waarde. Dit probleem kan worden opgelost met behulp van kennis van numerieke conversie. De belangrijkste punten zijn:
Het toekennen van een int aan een double werkt zonder enige extra programmering. Dit is veilig, omdat er geen informatie kan verloren gaan: er zijn geen cijfers achter de komma die zouden kunnen veranderen.
Het toekennen van een double aan een int kan resulteren in het verlies van een aantal cijfers achter de komma, die niet in de integer passen. Vanwege het mogelijke verlies aan informatie vereist Java dat we dit expliciet kenbaar maken door gebruik te maken van casting.
Om een double door middel van casting om te zetten naar een int, laten we deze voorafgaan door (int). De waarde wordt afgekapt, waardoor de cijfers achter de komma worden verwijderd.
Merk op dat we ook bij de conversie van een int naar een double expliciet gebruik zouden kunnen maken van casting, maar dat dit niet noodzakelijk is
Als we weer even teruggaan naar ons appelvoorbeeld, kunnen we een double-antwoord verkrijgen door:
int aantalAppels = 9;
int aantalPersonen = 4;
double aantalAppelsPerPersoon = (double) aantalAppels / (double) aantalPersonen;
Merk op dat (double) (aantalAppels / aantalPersonen) het verkeerde antwoord (namelijk 2.0) zou opleveren, omdat de integerdeling eerder wordt uitgevoerd dan casting.