Typisk i en grafisk brukergrensesnitt, vil det være tekstfelt som forventer at brukeren oppgir en numerisk verdi. Denne tallverdien havner i a string objekt som ikke hjelper programmet ditt hvis du vil gjøre noe aritmetikk. Heldigvis finnes det innpakningsklasser som gir metoder for å konvertere disse strengverdiene til tall, og strengklassen har en metode for å konvertere dem tilbake igjen.
Innpakningskurs
De primitive datatyper som omhandler tall (dvs. byte, int, dobbel, flyt, lang og kort) har alle klassekvivalenter. Disse klassene er kjent som innpakningsklasser fordi de tar en primitiv datatype, og omgir den med funksjonaliteten til en klasse. For eksempel vil dobbeltklassen ha en dobbel verdi som sine data og gi metoder for å manipulere den verdien.
Alle disse innpakningsklassene har en metode som kalles valueOf. Denne metoden tar en streng som et argument og returnerer en forekomst av innpakningsklassen. La oss for eksempel si at vi har en streng med verdien ti:
Stringnummer = "10";
Det har ingen nytte for oss å ha dette tallet som en streng, så vi bruker klassen Heltall for å konvertere det til et heltall-objekt:
Heltall konvertert nummer = heltall.valueOf (antall);
Nå kan tallet brukes som et nummer og ikke som en streng:
konvertert nummer = konvertert nummer 20;
Du kan også få konverteringen til å gå direkte til en primitiv datatype:
int convertNumber = Integer.valueOf (nummer) .intValue ();
For andre primitive datatyper kan du bare plassere riktig innpakningsklasse — Byte, Heltall, Dobbelt, Flyt, Lang Short.
Merk: Du må sørge for at strengen kan parses i riktig datatype. Hvis det ikke kan du ende opp med en kjøretidsfeil. For eksempel å prøve å gjemme "ti" til et heltall:
String nummer = "ti";
int convertNumber = Integer.valueOf (nummer) .intValue ();
vil produsere en NumberFormatException fordi kompilatoren ikke har noen anelse om at "ti" skal være 10.
Mer subtil vil den samme feilen oppstå hvis du glemmer at en "int" bare kan inneholde hele tall:
Stringnummer = "10,5";
int convertNumber = Integer.valueOf (nummer) .intValue ();
Kompilatoren vil ikke avkutte nummeret, den vil bare tro at den ikke passer inn i et 'int' og at det er på tide å kaste en NumberFormatException.
Konvertere tall til strenger
For å lage et nummer til en streng følger den samme typen mønster som strengklassen har en verdiOf-metode også. Det kan ta et av de primitive datatypenumrene som et argument og produsere en streng:
int antallTyve = 20;
Streng konvertert = String.valueOf (numberTwenty);
som setter "20" som strengverdien for co nverted.
eller du kan bruke toString-metoden i hvilken som helst av innpakningsklassene:
Streng konvertert = Heltall.tilStreng (antallTyve);
ToString-metoden er felles for alle objekttyper — mesteparten av tiden er det bare en beskrivelse av objektet. For innpakningsklasser er denne beskrivelsen den faktiske verdien de inneholder. I denne retningen er konverteringen litt mer robust. Hvis dobbeltklassen skulle brukes i stedet for heltall:
Streng konvertert = Double.toString (numberTwenty);
resultatet ville ikke føre til a kjøretidsfeil. Den konverterte variabelen vil inneholde strengen "20.0".
Det er også en mer subtil måte å konvertere tall på når du er sammenføyning av strenger. Hvis en streng skulle bygges slik:
String aboutDog = "Hunden min er" + nummerT tyve + "år gammel.";
konverteringen av int-nummeret Tyve blir automatisk gjort.