Java-syntaxis: tekenreeksen converteren naar getallen

Meestal in een grafische gebruikersinterfacezullen er tekstvelden zijn waarvan wordt verwacht dat de gebruiker een numerieke waarde invoert. Deze getallenwaarde komt terecht in een Draad 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 naar getallen en de String-klasse heeft een methode om ze weer terug te converteren.

Wrapper-klassen

De primitieve gegevenstypen die te maken hebben met getallen (d.w.z. byte, int, dubbel, zwevend, lang en kort) hebben allemaal klasse-equivalenten. Deze klassen staan ​​bekend als wrapper-klassen omdat ze een primitief gegevenstype hebben en deze omgeven met de functionaliteit van een klasse. De klasse Double heeft bijvoorbeeld een dubbele waarde als gegevens en biedt methoden voor het manipuleren van die waarde.

Al deze wrapper-klassen hebben een methode met de naam valueOf. Deze methode heeft een tekenreeks als argument en retourneert een exemplaar van de wrapper-klasse. Stel dat we een tekenreeks hebben met de waarde tien:

instagram viewer
String nummer = "10";

Het hebben van dit nummer als een String heeft geen zin voor ons, dus gebruiken we de klasse Integer om het te converteren naar een Integer-object:

Integer geconverteerdNummer = Integer.valueOf (getal);

Nu kan het nummer worden gebruikt als een nummer en niet als een tekenreeks:

convertNumber = geconverteerdNummer + 20;

U kunt de conversie ook rechtstreeks naar een primitief gegevenstype laten gaan:

int convertNumber = Integer.valueOf (number) .intValue ();

Voor andere primitieve gegevenstypen plaatst u gewoon de juiste wrapper-klasse - Byte, Integer, Double, Float, Long Short.

Notitie: U moet ervoor zorgen dat de tekenreeks kan worden geparseerd in het juiste gegevenstype. Als dit niet het geval is, krijgt u een runtime-fout. Als u bijvoorbeeld "tien" probeert te verbergen in een geheel getal:

String nummer = "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 je vergeet dat een 'int' alleen hele getallen kan bevatten:

Tekenreeksnummer = "10.5";
int convertNumber = Integer.valueOf (number) .intValue ();

De compiler zal het nummer niet afkappen, hij zal gewoon denken dat het niet in een 'int' past en dat het tijd is om een ​​NumberFormatException te gooien.

Nummers converteren naar tekenreeksen

Om een ​​getal in een String te veranderen, volgt hetzelfde soort patroon als de String-klasse ook een valueOf-methode heeft. Het kan elk van de primitieve gegevenstypegetallen als argument aannemen en een tekenreeks produceren:

int numberTwenty = 20;

String geconverteerd = String.valueOf (numberTwenty);

die "20" plaatst als de tekenreekswaarde van geconverteerd.

of u kunt de toString-methode van een van de wrapper-klassen gebruiken:

String geconverteerd = Integer.toString (numberTwenty);

De toString-methode is gemeenschappelijk voor alle objecttypen - meestal is het slechts een beschrijving van het object. Voor wrapper-klassen is deze beschrijving de werkelijke waarde die ze bevatten. In deze richting is de conversie iets robuuster. Als de Double-klasse zou worden gebruikt in plaats van de Integer:

String geconverteerd = Double.toString (numberTwenty);

het resultaat zou geen veroorzaken runtime-fout. De geconverteerde variabele zou de string "20.0" bevatten.

Er is ook een subtielere manier om getallen te converteren wanneer u dat bent aaneengeschakelde snaren. Als een String zou worden gebouwd zoals:

String aboutDog = "Mijn hond is" + numberTwenty + "jaar oud.";

de conversie van het int numberTwenty wordt automatisch gedaan.