Gewoonlijk zijn er in een grafische gebruikersinterface tekstvelden waarvan wordt verwacht dat de gebruiker een numerieke waarde invoert. Deze getalswaarde komt terecht in een String-object dat uw programma niet echt helpt als u wat rekenwerk wilt doen. Gelukkig zijn er wrapper-klassen die methoden bieden voor het converteren van die String-waarden in getallen en de String-klasse heeft een methode om ze weer terug te converteren.
De primitieve gegevenstypen die met getallen omgaan (d.w.z. byte, int, dubbel, float, lang en kort) hebben allemaal klasse-equivalenten. Deze klassen staan bekend als wrapper-klassen omdat ze een primitief gegevenstype hebben en deze omringen met de functionaliteit van een klasse. De Double-klasse heeft bijvoorbeeld een dubbele waarde als gegevens en biedt methoden voor het manipuleren van die waarde.
Al deze wrapper-klassen hebben een methode genaamd valueOf. Deze methode neemt een String als argument en retourneert een instantie van de wrapper-klasse. Laten we bijvoorbeeld zeggen dat we een string met de waarde tien hebben:
String nummer = "10";
Het hebben van dit nummer als tekenreeks is voor ons niet nuttig, dus gebruiken we de klasse Integer om het in een object Integer om te zetten:
Geheel getal geconverteerdNummer = Integer.valueOf (nummer);
Nu kan het nummer worden gebruikt als een nummer en niet als een tekenreeks:
omgezetNummer = omgezetNummer + 20;
U kunt de conversie ook rechtstreeks naar een primitief gegevenstype laten gaan:
int convertNumber = Integer.valueOf (number) .intValue ();
Voor andere primitieve gegevenstypen, voegt u gewoon de juiste wrapper-klasse in - Byte, Integer, Double, Float, Long Short.
Notitie: U moet ervoor zorgen dat de String in het juiste gegevenstype kan worden geparseerd. Als dit niet het geval is, krijgt u een runtime-fout. Probeert u bijvoorbeeld "tien" te verhullen tot een geheel getal:
Stringnummer = "tien";
int convertNumber = Integer.valueOf (number) .intValue ();
zal een NumberFormatException produceren omdat de compiler geen idee heeft dat "tien" 10 moet zijn.
Meer subtiel zal dezelfde fout optreden als u vergeet dat een 'int' alleen hele getallen kan bevatten:
String nummer = "10.5";
int convertNumber = Integer.valueOf (number) .intValue ();