Hoe tekenreeksen te converteren naar getallen en vice versa in Java

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.

Wrapper Classes

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 ();